WXT and Plasmo

Cross-browser Extensions with WXT and Plasmo

Hand-written folders stop scaling once you want TypeScript, npm 2,036 packages and several target browsers. WXT (https://github.com/wxt-dev/wxt 10,549 ) (MIT, version 0.21.4 in August 2026) is built on Vite 25,978 : files in entrypoints/ such as background.ts, content.ts and popup/index.html generate the manifest, the dev server reloads the extension as you edit, and one codebase builds Manifest V2 or V3 for Chrome 1 , Firefox 555 , Edge and Safari 10 . Plasmo (https://github.com/PlasmoHQ/plasmo 13,157 ) (MIT) takes a React-first, Parcel-based approach with helpers for storage, messaging and content-script UIs, but its last npm release, 0.90.5, dates from May 2025 and its README still calls it alpha software, so WXT is the safer choice for new projects.

Create, run and package a WXT extension for Chrome and FirefoxShell
npx wxt@latest init link-counter && cd link-counter && npm install
npm run dev                          # opens a browser with the extension loaded
npx wxt zip && npx wxt zip -b firefox   # store-ready ZIPs in .output/