Tooling to version WhatsApp Web JavaScript bundles and inspect diffs across releases.
- Uses
@vinikjkkj/wa-fetcher(discoverBundleUrls, URL-only mode) to discover every.jsbundle URL referenced byweb.whatsapp.com. - Saves the collected URLs to
urls.json. - Exports bundles with
wa-exportintofiles/(flat mode). - Runs Prettier on the exported files.
main.js: end-to-end runner (fetch URLs, export bundles, format files).urls.json: generated list of collected bundle URLs.files/: generated exported JavaScript files fromwa-export.
- Node.js
>=20 - npm
>=10
npm installnpm run fetchor:
node main.jsThe runner executes this logic after generating urls.json:
wa-export urls.json files --workers 50 --flatThen it formats the output:
prettier --write files --ignore-unknownnpm run start: runmain.jsnpm run fetch: runmain.jsnpm run check: syntax-checkmain.jsnpm run format: run Prettier on the reponpm run format:check: check Prettier formatting
- Run
npm run fetch. - Review changed files in
urls.jsonandfiles/. - Commit the update.
- Compare commits to analyze WhatsApp bundle changes.
Each commit pushed by the daily workflow gets an automatic GitHub Release summarizing what changed. The summary is produced by Gemini 2.5 Flash from the commit's --stat and git diff -U1 (when small enough), and includes both English and Portuguese versions in collapsible sections.
- Tag format:
vYYYY.MM.DD-HHMM(commit timestamp, UTC) - Generator:
.github/scripts/explain_commit.py - Workflow step lives in
.github/workflows/daily-update.yml - Requires repo secret
GEMINI_API_KEY(get one here)
Browse the latest summaries in the Releases tab.
- This project is intended for analysis/versioning workflows.
- Use responsibly and respect platform terms and applicable laws.