Unblock local development quickly by checking the highest-signal failures first. Use this page as a practical triage path before deeper debugging.
| Area | What this helps you verify |
|---|---|
| Restart diagnostics | Whether a restart is required for structural changes |
| Dependency setup | Whether optional tooling is missing for the current stack |
| Browser launch | Whether target/browser binary config is valid |
| Build/preview flow | Whether output exists for preview and matches target |
| Manifest paths | Whether referenced files resolve correctly |
--browser=chromium).dev, build, or both.| If this fails... | Check first | Next action |
|---|---|---|
| Extension does not load | Build and manifest errors | Verify referenced files and rerun dev |
| Browser does not launch | --browser + binary path |
Remove custom binary/profile flags and retry |
| Changes are not updating | Update type (HMR vs restart-required) | Review Dev update behavior and restart when required |
preview fails |
Existing dist/<browser> output |
Run extension build --browser=<target> first |
| Runtime still broken | Minimal reproducible setup | Reduce scope and capture exact command + error |
If you see a restart-required error, stop and rerun extension dev.
Typical triggers:
pages/ or scripts/See dev update behavior for the full matrix.
Some integrations are installed on demand (for example Vue/Preact refresh tooling, style preprocessors).
If the CLI prompts for optional dependency installation:
extension devIf target browser launch fails:
--chromium-binary / --gecko-binary)chromium target to isolate config issuespreview expects existing build output.
extension build --browser=<target>extension preview --browser=<target>If build reports missing manifest files:
/ usage (public-root semantics)If the issue persists:
--browser=chromium).dev and build both.