Repolode
extension-js

extension-js/extension.js

A cross-browser extension framework with zero-config dev server, hot reload, and builds for Chrome, Edge, Firefox, and Safari.

Stars
5,197
Forks
142
Open issues
5
Last commit
2 hours ago

What is it?

Extension.js is a CLI and build toolchain for developing browser extensions. It targets Chrome, Edge, Firefox, and Safari from a single codebase, with Manifest V3 as the default and automatic adapters for each browser's differences.

During development, it provides hot module replacement for popup, options, and devtools pages, including React, Vue, Svelte, and Preact components. Content scripts and the service worker reload in a targeted way, so saving a file does not restart the whole extension. It needs no webpack or rollup configuration.

The CLI can also build production bundles, package them as a ZIP for store submission, install managed browser binaries, and run extensions directly from a GitHub sample URL. It runs on Node.js, Deno, and Bun.

Key features

  • 01Hot module replacement for extension pages and targeted reloads for content scripts and the service worker
  • 02Zero-config setup with no webpack or rollup configuration to maintain
  • 03Manifest V3 by default with adapters for Chrome, Edge, Firefox, and Safari
  • 04Production builds packaged as ZIP files for store submission
  • 05Managed browser binaries installable via the CLI
  • 06Built-in support for TypeScript, React, Vue, Svelte, and Preact

Use cases

  • Building a cross-browser extension that must ship on Chrome Web Store and Firefox Add-ons
  • Adding hot reload to an existing extension with a single devDependency
  • Running a Chrome sample from GitHub in Edge or Firefox for testing
  • Developing extension UI in React, Vue, Svelte, or Preact

Quick start

  1. 1

    Create a new project with the CLI

    npx extension@latest create my-extension
  2. 2

    Enter the project folder

    cd my-extension
  3. 3

    Start the dev server and browser

    npm run dev

Things to know

  • The CLI requires Node.js 22.12+, Deno 2.5+, or Bun 1.2+.
  • Deno 2.8.0 is refused by the CLI.

In collections

Topics

FAQ

What is extension.js?
A cross-browser extension framework with zero-config dev server, hot reload, and builds for Chrome, Edge, Firefox, and Safari. Extension.js is a CLI and build toolchain for developing browser extensions. It targets Chrome, Edge, Firefox, and Safari from a single codebase, with Manifest V3 as the default and automatic adapters for each browser's differences.
Is extension.js free to use? What license does it have?
extension.js is open source under the MIT license. Check the license terms before using it in commercial products.
Is extension.js still maintained?
Actively maintained. The last commit to extension.js was on Oct 22, 2026.
What can I use extension.js for?
Building a cross-browser extension that must ship on Chrome Web Store and Firefox Add-ons Adding hot reload to an existing extension with a single devDependency Running a Chrome sample from GitHub in Edge or Firefox for testing Developing extension UI in React, Vue, Svelte, or Preact
How do I install extension.js?
Create a new project with the CLI: npx extension@latest create my-extension Enter the project folder: cd my-extension Start the dev server and browser: npm run dev
Where can I get extension.js?
The source code and installation instructions are on GitHub: https://github.com/extension-js/extension.js

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects