extension-js/extension.js

The cross-browser extension framework.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 50 minutes ago
Added to GitGenius on September 13th, 2026
Created on October 22nd, 2020
Open Issues & Pull Requests: 5 (+0)
GitHub issues: Enabled
Number of forks: 139
Total Stargazers: 5,157 (+0)
Total Subscribers: 17 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 36.8 hours
Mean response time: 51.5 days
90th percentile: 185.0 days
Tracked items: 134

Most active contributors

Sign in to see contributor activity.

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 9% of issues opened in the past year have been closed. Three people close 84% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 5
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 317 days
Stale 30+ days: 4
Stale 90+ days: 3

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (19)
  • needs:developer-validation (17)
  • feature:request (9)
  • not actionable (7)
  • manifest:background (4)
  • browser:firefox (3)
  • feature:templates (3)
  • manifest:content_scripts (3)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Extension.js is a cross-browser extension framework that enables developers to build extensions for Chrome, Edge, Firefox, and Safari without requiring build configuration.

The tool addresses the fragmented and cumbersome developer experience of browser extension development. Extension.js solves this by providing hot module replacement for background, content, popup, and options scripts across all supported browsers, automatically handling Manifest V3 adapters for each target, and offering a single CLI interface regardless of which browser or binary is being targeted. The framework includes first-class support for TypeScript, React, Vue, Svelte, and Preact, and can generate production-ready zip files for store submission with a single command.

Developers should choose this tool if they are building extensions for multiple browsers and want to avoid maintaining separate build pipelines for each target. It suits projects of any size that benefit from hot module replacement during development and streamlined production builds. Compared to alternatives like Plasmo, WXT, and CRXJS, the tool distinguishes itself by supporting direct execution of GitHub samples via CLI, managing isolated browser binaries through the extension command, providing built-in cross-browser hot module replacement for content scripts without plugins, generating production zips for store submission, maintaining framework agnosticism with no vendor lock-in, and allowing custom Chromium and Gecko binaries to be specified.

The project maintains active development with regular updates to its core functionality and examples. The tool works across multiple package managers including npm, pnpm, yarn, bun, and deno, indicating ongoing attention to compatibility with the JavaScript ecosystem. Documentation is actively maintained alongside a collection of templates and examples that demonstrate the framework's capabilities across different technology stacks.