# WPPConnect: the start script compiles an app.ts the repository does not contain

> WPPConnect exports WhatsApp Web functions to Node as a TypeScript package. Its install is one npm line, its build is tsc plus webpack over a vendored web layer, and its script list contains an entry point that no file in the tree satisfies.

**wppconnect-team/wppconnect** — WPPConnect is an open source project developed by the JavaScript community with the aim of exporting functions from WhatsApp Web to the node, which can be used to support the creation of any interaction, such as customer service, media sending, intelligence recognition based on phrases artificial and many other things, use your imagination

- Repository: https://github.com/wppconnect-team/wppconnect
- Website: https://wppconnect.io
- Stars: 3,461 · Forks: 569
- Language: TypeScript
- License: NOASSERTION
- Published: 2026-09-16 · Updated: 2026-09-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/wppconnect-team-wppconnect

## The start script compiles an app.ts the repository does not contain

The Development section says building the whole project is one command:

```bash
> npm run build
```

That target is defined as two steps, a webpack pass inside `src/lib/wapi/` followed by `tsc`. The next script in the list is the interesting one. `start` is defined as `npm run build:client && tsc app.ts && node app.js`, so it compiles a TypeScript file called `app.ts` from the repository root and then runs the JavaScript it produces. The top-level tree holds twenty-six entries and `app.ts` is not one of them, nor is `app.js`. Nothing under `src/`, `examples/` or `docs/` sits at the root where the script looks, so the one command in this manifest that is meant to produce a runnable application has nothing to compile in a fresh clone. The build target works on the library itself, which is a different job from the one `start` names.

## The install is one npm line, and the pairing step lives off-site

Installation is a single command:

```bash
npm i --save @wppconnect-team/wppconnect
```

Everything after that is a link. Two anchors in the header point at a Getting Started page and a Basic Function page on the project site, and the same Getting Started link is repeated under the install section, so the front page hands over the package name and then defers. The functions table explains what the paired thing can do: automatic QR refresh, sending text, images, video, audio and documents, reading contacts, chats, groups, group members and a block list, sending contacts, sending stickers and sticker GIFs, holding multiple sessions, forwarding and receiving messages, sending a location, and a row that says and much more. One row in that table is written in lower case, insert user section, which is the only entry phrased as an implementation note rather than a capability, and it is also the only one whose meaning the page never explains.

## prepare deletes two directories before every build

Three of the delete scripts are worth reading before installing anything. `clean` is `shx rm -rf session dist`, which removes two directory names with no prompt and no check on what is in them. `docs:clean` is `shx rm -rf api-docs`, and `docs:copy-images` then copies the repository's entire `img/` directory into the generated documentation output, so a folder of images becomes part of the published API docs rather than staying beside them. The one that ties them together is `prepare`, defined as `husky install && npm run clean && npm run build`. That chain means a clean step and a full two-stage build sit on the install path of the package, not only on a release path. Whatever `session` holds, the manifest deletes it as part of the sequence, and no other entry in the manifest or the front page explains what that directory is for or how to recreate it.

## Five example directories, and one script that reaches any of them

The repository ships five example directories: `basic`, `bot-functions`, `newsletter`, `orders` and `rest`. Exactly one of them is wired to a script. The `example` entry runs `node ./examples/basic/index.js` and nothing else, so the newsletter, orders, bot-functions and rest examples have no script, no mention in the front page, and no visible path from a clone. The shape of the names suggests the four that are unwired are the interesting ones, since newsletter sending and order handling are the cases a customer service deployment would start from. Elsewhere in the root there is a video file, `test.mp4`, sitting beside `tsconfig.json` and `typedoc.json`, and a `.codebeatignore` that presumably exists to keep tooling away from it. The test script runs mocha with ts-node over a glob inside `src/`, so the tests live inside the source directory rather than in a top-level `test/`.

## The published entry point is dist/index.js, and the stability promise covers names only

The manifest publishes `dist/index.js` with types at `dist/index.d.ts`, so what reaches npm is compiled output and the sources stay behind. The release history explains why. A section headed Update checking opens by saying Whatsapp is in constant change, and instructs readers to keep the package current for that reason. It then makes a specific promise: method and function names will not change, only their core algorithm, so nobody has to edit code at every update, and the names will remain the same forever but might experience deprecation. That is a promise about the shape of the interface rather than about behaviour, and it is the honest shape of the risk, because the library mirrors an interface the upstream client controls. The release list has its own oddity: alongside v2.3.4 and v2.3.3 sits a tag named nightly, dated 2021-01-25, so the permanently named tag carries the oldest date in the record.

## One maintainer asking for more, and seven badges over five URLs

The maintainer section is three sentences and the first is an admission: maintainers are needed, I cannot keep with all the updates by myself, followed by an invitation to open a pull request. Everything about the release cadence in the previous section depends on that one person and whoever takes the invitation. The badge row above it holds seven links pointing at five distinct URLs: the npm package page appears twice, the GitHub Actions page appears twice, and two more go to a third party service for average issue resolution time and percentage of issues still open. The first of those two is a measure of how fast the maintainer answers, published by the project as a badge. A star history chart sits near the bottom, and its address names two repositories rather than one, the package itself and a second repository under the same organisation.

## Three files describe the license, and the recorded field reports NOASSERTION

The front page carries the standard notice: WPPConnect is free software that can be redistributed or modified under the GNU Lesser General Public License, either version 3 of the License or, at your option, any later version, with the usual warranty disclaimer and a pointer to gnu.org for the full text. The tree carries a `LICENSE.md` at the root. The license field recorded for the repository is NOASSERTION, which reports that nothing was determined rather than naming a license. So the same project states its terms in prose, ships a file, and records nothing, and a reader taking the recorded field at face value would conclude the opposite of what the page says. The rest of the root is a long list of tooling configuration: commitlint, husky, release-it, prettier, a flat eslint config, typedoc, conventional-changelog, commitizen, and three separate ignore files.

## Conclusion

First, the terms. WPPConnect drives WhatsApp Web, and whether scripted use of that web client is permitted is a question for whoever owns the account and the number behind it, before any code is written. Given that is settled, the package fits a team that already has a WhatsApp account it is willing to pair, that wants customer service and media flows scripted, and that accepts tracking an interface it does not control. It fits badly as a dependency anyone else will install, because the published entry point is a compiled bundle rather than sources. Four things are worth checking first: the last push is dated 2026-10-04 with tags v2.3.4 and v2.3.3, so update cadence is real, and the project's own update section says function names hold while the algorithms underneath them change. The prepare hook deletes a session directory and a dist directory before every build. Five of the five example directories are not reachable from any script except one. And three separate files describe the license, with the recorded field reporting NOASSERTION. Nothing above was installed or run.

## FAQ

### What is WPPConnect?

A TypeScript project that exports functions from WhatsApp Web to Node, published as the npm package `@wppconnect-team/wppconnect`. The page names customer service, media sending and phrase based recognition as the kinds of interaction it is meant to support. Its entry point is `dist/index.js`.

### How do you install WPPConnect?

With `npm i --save @wppconnect-team/wppconnect`. The front page carries only that line and links out twice to the Getting Started page on the project site for everything that follows it.

### Why does WPPConnect ask users to update the package so often?

Because it tracks WhatsApp Web, which its update checking section describes as being in constant change. It states that method and function names are kept while the core algorithm underneath them changes, and that the names remain the same forever but might experience deprecation.

### What license is WPPConnect released under?

The front page carries the GNU Lesser General Public License, either version 3 or any later version at your option. The repository also ships a `LICENSE.md` at the root, while the license field recorded for the project is NOASSERTION, which reports that nothing was determined.

### How many WPPConnect examples ship with the repository?

Five example directories: basic, bot-functions, newsletter, orders and rest. One npm script is wired to them, and it runs `node ./examples/basic/index.js`, so the other four are not reachable from any script in the manifest.

## Sources

- [Issues](https://github.com/wppconnect-team/wppconnect/issues)
- [Project website](https://wppconnect.io)
- [README](https://github.com/wppconnect-team/wppconnect/blob/master/README.md)
- [Releases](https://github.com/wppconnect-team/wppconnect/releases)
- [wppconnect-team/wppconnect on GitHub](https://github.com/wppconnect-team/wppconnect)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/wppconnect-team-wppconnect
