Web Dev Tools

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.

On this page