
The cross-browser extension framework
Build browser extensions for Chrome, Edge, and Firefox with one modern workflow. Extension.js handles manifest compilation, browser-specific output, reload behavior, and packaging so you can focus on product features.
From developers worldwide
Real feedback from developers experimenting with Extension.js.
Watch the full developer workflow
From scaffold to running extension, in one modern toolchain.
Core features for the full extension lifecycle
Build, test, and ship for every browser with one modern extension workflow.
Compile one extension into browser-specific output
Build once for Chrome, Edge, Firefox, and custom Chromium or Gecko targets. Browser-specific output stays predictable across development, testing, and release builds.
Keep extension structure explicit
Manifest, paths, and emitted assets stay in sync as your extension grows.
Use the lightest safe path
Get the fastest safe update path for every change, from HMR to full restarts.
Bring your preferred stack
Start with React, Vue, Svelte, TypeScript, or JavaScript and keep one workflow, so your team picks the right UI model without changing the core extension toolchain.
Inject environment values cleanly
Load environment values by browser and mode, then replace them across JavaScript, JSON, and HTML. Development secrets never leak into production bundles.
Build, preview, package
One flow from local check to store-ready artifacts per browser.
Pick your framework. Keep your workflow.
Start with production-ready templates for React, Preact, Vue, Svelte, TypeScript, or JavaScript.
React
Preact
Vue
Svelte
TypeScript
JavaScript
Backing the open source core
Sponsors help us ship faster releases, better DX, and long-term reliability for extension teams.


Frequently asked questions
How does Extension.js handle hot reload during development?
How does Extension.js handle hot reload during development?
npx extension dev and the CLI watches your project for changes. Edits to popups, content scripts, background service workers, and options pages trigger the fastest safe update path available: HMR when the platform supports it, targeted reloads when it does not. The CLI resolves common pain points like stale service workers and missed content-script updates automatically.How do I build one extension for Chrome, Edge, and Firefox?
How do I build one extension for Chrome, Edge, and Firefox?
Can I use React, Preact, Vue, Svelte, or TypeScript?
Can I use React, Preact, Vue, Svelte, or TypeScript?
Does Extension.js support Manifest V3?
Does Extension.js support Manifest V3?
How do I migrate from a custom webpack or Vite setup?
How do I migrate from a custom webpack or Vite setup?
Does Extension.js work with monorepos and environment variables?
Does Extension.js work with monorepos and environment variables?

