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-extension

From 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.

Extension.js welcome page preview

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

Chrome browser icon
Firefox browser icon
Edge browser icon

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

JSON doc icon

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

React framework icon
Vue framework icon
Svelte framework icon

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

Environment doc icon

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

React icon

Build polished extension interfaces with React, strong tooling, and a mature component ecosystem.

Preact

Preact icon

Get a React-like workflow with a lighter runtime and smaller bundles.

Vue

Vue icon

Use single-file components and clear conventions for maintainable extension UIs.

Svelte

Svelte icon

Ship interactive UIs with concise components and minimal runtime overhead.

TypeScript

TypeScript icon

Add type safety for clearer refactors and long-term maintainability.

JavaScript

JavaScript icon

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.

Backing the open source core

Sponsors help us ship faster releases, better developer experience, and long-term reliability for extension teams.

TestMu AI logo

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.