start when you want a production build and immediate browser launch in one command.
The start command runs a production build first, then launches the built extension using the same flow as the preview command.
When to use start
- Manually validating production behavior right after compilation.
- Reproducing runtime differences between watch mode and production output.
- Running a production-like check locally without a separate
buildthenpreviewstep.
Start command capabilities
| Capability | What it gives you |
|---|---|
| Build + launch workflow | Run production compile and browser launch in one step |
| Target selection | Start directly in selected browser or engine target |
| Runner control | Skip browser launch when you only need build verification |
| Production-like validation | Check real compiled output instead of watch-mode state |
How it differs from other commands
dev: development server + hot module replacement (HMR)/watch loopbuild: production build onlypreview: launch an existing built extension without buildingstart:build+previewin sequence
Usage
Arguments and flags
| Flag | Alias | What it does | Default |
|---|---|---|---|
[path or url] | - | Extension path or remote URL. | process.cwd() |
--browser <browser> | - | Browser/engine target. | chromium |
--profile <path|boolean> | - | Browser profile path or boolean profile mode. | fresh profile |
--chromium-binary <path> | - | Custom Chromium-family binary path. | system default |
--gecko-binary <path> | --firefox-binary | Custom Gecko-family binary path. | system default |
--polyfill [boolean] | - | Enable browser.* API compatibility polyfill for Chromium targets. | true |
--starting-url <url> | - | Starting URL in launched browser. | unset |
--no-browser | - | Build but skip browser launch. | browser launch enabled |
--wait [boolean] | - | Wait for dist/extension-js/<browser>/ready.json and exit. | disabled |
--wait-timeout <ms> | - | Timeout for --wait mode. | 60000 |
--wait-format <pretty|json> | - | Output format for wait results (json is machine-readable). | pretty |
--port <port> | - | Runner/devtools port when runner is enabled. Use 0 for OS-assigned port. | 8080 |
--host <host> | - | Host to bind the dev server to. Use 0.0.0.0 for Docker/devcontainers. | 127.0.0.1 |
--extensions <list> | - | Comma-separated companion extensions or store URLs. | unset |
--install [boolean] | - | Install project dependencies when missing. | command behavior default |
--author | --author-mode | Enable maintainer diagnostics. | disabled |
Automation metadata
start writes readiness metadata to:
dist/extension-js/<browser>/ready.json
--no-browser:
- wait for
status: "ready"before launching external runners - handle
status: "error"as a deterministic failure signal - use
runIdandstartedAtto correlate a specific runtime session
--no-browser and readiness synchronization
--no-browser only disables browser launch. It does not block external runners until the production build finishes.
For production-oriented Playwright, continuous integration (CI), and AI workflows:
- run
extension start --no-browseras the producer process - run
extension start --wait --browser=<browser>as the readiness gate - launch external browser automation only after
status: "ready"
--wait exits non-zero on error/timeout and ignores stale contracts from dead processes (pid no longer alive).
If you pass both --wait and --no-browser in the same invocation, --wait takes precedence. The command runs in wait-only mode.
Logging flags
| Flag | What it does | Default |
|---|---|---|
--logs <off|error|warn|info|debug|trace|all> | Minimum log level. | off |
--log-context <list|all> | Context filter (background, content, page, sidebar, popup, options, devtools). | all |
--log-format <pretty|json|ndjson> | Logger output format. | pretty |
--no-log-timestamps | Disable timestamps in pretty mode. | timestamps enabled |
--no-log-color | Disable color in pretty mode. | color enabled |
--log-url <pattern> | Filter log events by URL substring/regex. | unset |
--log-tab <id> | Filter log events by tab ID. | unset |
Source inspection flags (not supported in start)
start accepts these flags in parsing, but exits with an error if you use them. Use dev --source ... instead.
| Flag | Support in start |
|---|---|
--source [url] | not supported (command exits with guidance) |
--watch-source [boolean] | not supported (command exits with guidance) |
--source-format <pretty|json|ndjson> | not supported (command exits with guidance) |
--source-summary [boolean] | not supported (command exits with guidance) |
--source-meta [boolean] | not supported (command exits with guidance) |
--source-probe <selectors> | not supported (command exits with guidance) |
--source-tree <off|root-only> | not supported (command exits with guidance) |
--source-console [boolean] | not supported (command exits with guidance) |
--source-dom [boolean] | not supported (command exits with guidance) |
--source-max-bytes <bytes> | not supported (command exits with guidance) |
--source-redact <off|safe|strict> | not supported (command exits with guidance) |
--source-include-shadow <off|open-only|all> | not supported (command exits with guidance) |
--source-diff [boolean] | not supported (command exits with guidance) |
Shared global options
Also supports global flags.Examples
Start with default browser
Start in Firefox
Build and skip browser launch
Behavior notes
startdoes not run a dev server and does not provide hot module replacement (HMR) or watch mode.startis production-mode oriented; usedevfor iterative local development.startdoes not support source inspection options. Usedev --source ...for that workflow.- For machine consumers, parse
dist/extension-js/<browser>/ready.jsoninstead of terminal text.

