Control browser launch behavior for debugging, automation, and runtime experiments. Tune browser launch behavior without changing extension source code. Extension.js merges browser flags from yourDocumentation Index
Fetch the complete documentation index at: https://extension.js.org/llms.txt
Use this file to discover all available pages before exploring further.
extension.config.* and applies them in dev, preview, and start flows.
Does Firefox have firefox://flags?
Firefox does not use firefox://flags the way Chromium browsers use chrome://flags or edge://flags. Firefox exposes runtime toggles through about:config (preferences) and accepts launch flags from the command line.
If you searched for firefox://flags, firefox //flags, browser://flags, mozilla://flags, or about flags firefox, you are probably trying to change browser behavior during extension development. In Extension.js, do that in two places:
- Use
browserFlagsfor launch-time flags Extension.js passes to the browser binary. - Use Firefox preferences for repeatable Gecko runtime behavior that would otherwise live in
about:config.
Template examples
new-browser-flags

How it works
Configure flags inextension.config.*:
browser.<target>.browserFlagscommands.dev|start|preview.browserFlags- Optional
excludeBrowserFlagsto remove defaults or user flags (behavior depends on whether you target Chromium or Firefox).
Flag capabilities
| Config key | What it does |
|---|---|
browser.<target>.browserFlags | Sets default launch flags for a specific browser target. |
commands.dev.browserFlags | Adds or overrides flags for dev runs. |
commands.start.browserFlags | Adds or overrides flags for start runs. |
commands.preview.browserFlags | Adds or overrides flags for preview runs. |
browser.<target>.excludeBrowserFlags | Removes matching default or user flags for a target. |
commands.<name>.excludeBrowserFlags | Removes flags in a command-specific context. |
Example configuration
Chromium vs Firefox behavior
-
Chromium family (
chrome,edge,chromium,chromium-based)- Starts from an internal default flag set, then appends your
browserFlags. excludeBrowserFlagsremoves matching default flags (exact-match filtering).- Extension.js manages
--load-extension=...and filters it out from user-provided flags.
- Starts from an internal default flag set, then appends your
-
Firefox/Gecko family (
firefox,gecko-based/firefox-based)- Uses user-provided
browserFlags(no large default flag bundle like Chromium). excludeBrowserFlagsremoves user flags by prefix matching.
- Uses user-provided
Default Chromium flags
Extension.js applies these flags automatically when launching Chromium-family browsers. UseexcludeBrowserFlags to remove any you do not need.
| Flag | Purpose |
|---|---|
--no-first-run | Disable first run experience |
--disable-client-side-phishing-detection | Disable phishing detection |
--disable-sync | Disable sync to avoid account prompts |
--disable-component-extensions-with-background-pages | Disable built-in extensions not affected by --disable-extensions |
--disable-default-apps | Disable installation of default apps |
--disable-features=InterestFeedContentSuggestions | Disable Discover feed on new tab page (NTP) |
--disable-features=Translate | Disable Chrome translation |
--hide-scrollbars | Hide scrollbars from screenshots |
--mute-audio | Mute any audio |
--no-default-browser-check | Disable default browser check prompt |
--ash-no-nudges | Avoid user education nudges |
--disable-search-engine-choice-screen | Disable search engine choice screen |
--disable-features=MediaRoute | Disable Chrome Media Router background networking |
--use-mock-keychain | Use mock keychain on Mac to prevent blocking dialogs |
--disable-background-networking | Disable background network services |
--disable-breakpad | Disable crashdump collection |
--disable-component-update | Disable component updates |
--disable-domain-reliability | Disable domain reliability monitoring |
--no-pings | Disable hyperlink auditing pings |
--enable-features=SidePanelUpdates | Ensure side panel is visible |
--disable-features=DisableLoadExtensionCommandLineSwitch | Allow --load-extension at the command line |
--enable-unsafe-extension-debugging | Allow Chrome DevTools Protocol (CDP) extension management (Chrome 126+) |
--silent-debugger-extension-api | Suppress the “X is debugging this browser” infobar |
In Docker, continuous integration (CI), or containerized environments,
Extension.js also applies
--no-sandbox and --disable-setuid-sandbox
automatically.Supported targets and references
| Browser | Usage | More information |
|---|---|---|
| Chrome | extension dev --browser=chrome | Chrome Flags |
| Edge | extension dev --browser=edge | Edge Flags |
| Firefox | extension dev --browser=firefox | Firefox Flags |
| Chromium-based | extension dev --browser=chromium-based | Chromium Flags |
| Gecko-based | extension dev --browser=gecko-based | Firefox-based browsers share the same flags as Firefox. |
--chromium-binary=...--gecko-binary=...
Best practices
- Add only necessary flags: Minimize long flag lists to reduce flaky or non-portable setups.
- Prefer
excludeBrowserFlagsover replacing defaults: Remove only what conflicts with your workflow. - Do not pass
--load-extensionmanually: Extension.js manages extension loading flags internally. - Validate per browser family: A flag working in Chromium may be invalid or ignored in Firefox.
Next steps
- Learn more about Browser preferences.
- Learn more about Browser profile.
- Choose a target in Browsers available.
- Wire flags through
extension.config.*.

