Chrome extension development
For Chrome extension development, targetchrome (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, targetfirefox: 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, targetedge: 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.
You can also run two dev sessions concurrently, one terminal per browser. Session state (ready contract, control channel, logs, profile) is keyed per browser, so a Chrome session and a Firefox session never collide. See Session artifacts for the on-disk layout.
What to read first
Practical target strategy
- Use named targets (
chrome,edge,firefox) for daily checks. - Use comma-separated targets for release validation.
- Use engine targets only when you need custom binaries.
- Keep browser differences in browser-prefixed manifest fields.
Next steps
- Learn manifest filtering in Cross-browser compatibility.
- Configure browser-specific keys in Browser-specific manifest fields.

