Skip to main content

Documentation Index

Fetch the complete documentation index at: https://extension.js.org/llms.txt

Use this file to discover all available pages before exploring further.

Run one extension codebase across Chrome, Edge, Firefox, and custom binaries with explicit browser targeting workflows.

Chrome extension development

For Chrome extension development, target chrome (or chromium for the default Chromium binary): extension dev --browser=chrome. Extension.js loads the extension into a fresh, isolated profile and applies a sane set of Chrome launch flags so reload behavior is predictable.

Firefox extension development

For Firefox extension development, target firefox: extension dev --browser=firefox. Manifest V3 background scripts compile to a non-persistent scripts array (Firefox does not use service_worker), and Firefox preferences replace the Chromium concept of chrome://flags. See Browser preferences.

Edge extension development

For Edge extension development, target edge: extension dev --browser=edge. Edge shares the Chromium engine, so most flags and APIs match Chrome, but Extension.js still emits a separate dist/edge artifact for distribution.

Cross-browser extension development

For cross-browser extension development, run multiple targets in one command (extension dev --browser=chrome,firefox) and keep browser differences in browser-prefixed manifest fields. One project, one manifest.json, distinct outputs per browser. See Cross-browser compatibility for the full pipeline.

What to read first

NeedRead this
Choose browser targets quicklyBrowsers available
Customize launch behaviorBrowser flags
Configure Firefox preferencesBrowser preferences
Control profile isolationBrowser profile
Run Brave or custom binariesRunning other browsers

Practical target strategy

  1. Use named targets (chrome, edge, firefox) for daily checks.
  2. Use comma-separated targets for release validation.
  3. Use engine targets only when you need custom binaries.
  4. Keep browser differences in browser-prefixed manifest fields.

Next steps

Video walkthrough