Browser Extensions
Chrome / Firefox / Edge / Safari extension frameworks.
The Manifest V3 transition is largely done by 2026. Modern frameworks abstract the differences between browsers and the constraints of MV3 service workers.
Frameworks
- ★ WXT — Vite-powered, file-based "entrypoints" (popup, content script, background, options), HMR, cross-browser builds, TypeScript-first. The default for new extensions in 2026.
- Plasmo — Next.js-shaped DX for extensions; popular but maintenance has slowed; check recent activity before starting new projects.
- CRXJS — Vite plugin for the most basic, "I just want Vite to build a Chrome extension" use case.
- vite-plugin-web-extension — alternative Vite plugin; cross-browser, lower-level than WXT.
- web-ext (Mozilla) — official CLI for Firefox; pairs with any framework.
UI inside extensions
You can use any web frontend — React, Svelte, Solid, Vue. WXT and Plasmo both make this trivial.
Storage / messaging
chrome.storage.local/chrome.storage.sync— built-in, MV3-friendly.@webext-core/storage— typed wrapper.@webext-core/messaging— typed messaging between content / background / popup.- WXT storage / messaging modules — bundled with WXT.
Native messaging / co-app
- Chrome Native Messaging — extension talks to a local binary (e.g., for password managers).
- Rare for new projects; use only if browser APIs aren't enough.
Distribution
- Chrome Web Store — $5 one-time dev fee.
- Firefox Add-ons — free, signed by Mozilla.
- Edge Add-ons — free.
- Safari Web Extensions — packaged via Xcode; requires Apple Developer account ($99/yr).
Pick this if…
- Default new extension: WXT.
- You only want Chrome and zero opinions: CRXJS.
- Existing Plasmo project: stay; for new projects, WXT.