
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.
npx extension@latest create my-extensionFrom developers worldwide
Real feedback from developers and teams 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, while keeping browser-specific output predictable across development, testing, and release builds.
Keep extension structure explicit
Keep your manifest, paths, and emitted assets 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 can choose the right UI model without changing the core extension toolchain.
Build, preview, and package with one flow
Build, preview, and package for each browser from the same project, with a release flow that stays clear from first local check to store-ready artifacts.
Inject environment values cleanly
Load environment values by browser and mode, then replace them in JavaScript, JSON, and HTML.
Pick your framework. Keep your workflow.
Start with production-ready templates for React, Vue, Svelte, TypeScript, or JavaScript.
React
Build polished extension interfaces with React, strong tooling, and a mature component ecosystem.
JavaScript
Start fast and ship quickly with the lightest setup, while keeping the path clear for rapid prototypes, production-ready features, and teams that want minimal ceremony.
Developer FAQ
Practical answers for setup, cross-browser support, and production delivery.
Most developers can scaffold and run a working extension in minutes. The create flow gives you a clear starting point, sensible defaults, and templates that are ready to open in your editor and load in the browser.
That means less time assembling folders, manifests, and scripts by hand. You can start validating the product idea earlier, then iterate on the extension itself instead of the setup.
Yes. Extension.js is designed for cross-browser development, so one project can produce browser-aware output for Chrome, Edge, and Firefox without splitting your codebase into separate apps.
The workflow stays consistent while the build output adapts to each target. That keeps local testing simpler, reduces drift between browsers, and makes release management easier over time.
No. You can keep a familiar stack and start with React, Vue, Svelte, TypeScript, or JavaScript templates. The goal is to let teams move into extension development without relearning everything around the UI layer.
That makes adoption much smoother for product teams and agencies already shipping on the web. You keep the tools and patterns you know, while Extension.js handles the extension-specific workflow around them.
Yes. Teams use Extension.js to standardize how they build, test, preview, and release browser extensions. It helps make the workflow more repeatable without forcing a heavy platform layer on top of the project.
That matters as a codebase grows and more contributors get involved. Clear output, predictable commands, and maintainable structure make it easier to move from experimentation to a production process.
Start with Getting Started, then move into the first-extension guide for the quickest path to a working project. That sequence gives you enough context to understand the workflow without asking you to read everything upfront.
After that, use the template guides and feature pages based on the stack you want to ship with. The docs are easiest to navigate when you begin with the core flow, then branch into the details that match your project.

