Looking for
chrome://flags or edge://flags? Type it into your address
bar, which is the browser’s built-in page. Firefox has no firefox://flags;
use about:config instead.If you’re toggling flags to test or build a browser extension, Extension.js
applies them per-project automatically across Chrome, Edge, and Firefox, so you
don’t pass flags by hand on every run. Create your first extension in 30
seconds →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.
Flags in other browsers
Extension.js launches and configures any Chromium-based browser the same way.brave://flags,opera://flags,vivaldi://flags,yandex://flags: all Chromium-based, so they behave identically tochrome://flags, and Extension.js manages them per-project.internet://flagsandbrowser://flags: these are not real browser schemes. You are most likely looking forchrome://flags(Chromium) orabout:config(Firefox).edge://flags: Edge is Chromium, so it works exactly like Chrome in Extension.js.
extension.config.* and Extension.js applies them every run. See
browserFlags below.
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
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.
Always-on session flags
Beyond the default table, every Chromium launch gets a fixed block of session-stability flags. They keep background timers, occluded windows, and renderer throttling from distorting automated and AI-driven sessions.excludeBrowserFlags cannot remove them:
dev mode only, Extension.js also wires the debugging channel with three flags: --remote-debugging-port=<derived port>, --remote-debugging-address=127.0.0.1, and --remote-debugging-pipe. Production-mode launches (start, preview) skip this trio.
Feature-switch merging
Chromium honors only the last occurrence of a repeated switch. Extension.js therefore merges every--enable-features and --disable-features occurrence into one comma-joined switch each. Defaults, config, and environment values all merge, and duplicate feature names are removed. You can safely pass --disable-features=Foo in browserFlags without erasing the defaults.
Environment switches
EXTENSION_BROWSER_FLAGSappends whitespace-separated flags to every launch. It is applied after config flags and afterexcludeBrowserFlagsfiltering, soexcludeBrowserFlagscannot remove flags that come from this variable.EXTENSION_HEADLESS=1(ortrue) forces--headless=new, unless a--headlessflavor was already passed through config or environment flags. Use it as a focus-steal guard for automated sessions.
In Docker, continuous integration (CI), or containerized environments,
Extension.js also applies
--no-sandbox and --disable-setuid-sandbox
automatically. On Linux it detects a container through any of these signals:
CI=true, a /.dockerenv file, a /run/.containerenv file,
REMOTE_CONTAINERS=true, CODESPACES=true, or a set container variable.Supported targets and references
Use binary flags when needed for engine-based targets:
--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.*. - New to extension tooling? Start with the getting started overview.

