Troubleshooting capabilities
| 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 |
Fast triage flow
- Reproduce with one target (
--browser=chromium). - Remove custom profile and binary flags.
- Confirm whether the issue happens in
dev,build, or both. - Fix one error class at a time (restart, dependency, path, or launch).
Quick diagnosis decision tree
| 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 (hot module replacement 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 |
Common issues
Restart required diagnostics
If you see a restart-required error, stop and rerunextension dev.
Typical triggers:
- manifest entrypoint list changes
- adding/removing files in
pages/orscripts/ - structural HTML script/style entry changes
Missing optional dependencies
The CLI installs some integrations on demand (for example, Vue/Preact refresh tooling, style preprocessors). If the CLI prompts for optional dependency installation:- Allow the install.
- Restart
extension dev. - Run again after dependencies finish installing.
Browser binary problems
If target browser launch fails:- verify custom binary path (
--chromium-binary/--gecko-binary) - confirm browser target is compatible with the provided binary
- fallback to default
chromiumtarget to isolate config issues
Build runs but preview fails
preview expects existing build output.
- run
extension build --browser=<target> - then run
extension preview --browser=<target>
Manifest reference errors
If build reports missing manifest files:- verify paths are relative to manifest location
- verify leading
/usage (public-root semantics) - ensure files actually exist in source/public locations
Docker, devcontainers, and Codespaces
When running inside a container, the dev server binds to127.0.0.1 by default, so the host machine cannot reach it.
- Pass
--host 0.0.0.0to bind to all interfaces. - Use
--port 0to let the OS assign a free port if8080is taken. - If browser connections are slow or flaky in continuous integration (CI) containers, increase the connection timeouts using browser transport tuning variables.
Still blocked after fixes
If the issue persists:- clear temporary assumptions and reproduce from a clean terminal session
- reduce to the smallest manifest/entrypoint case that still fails
- capture the exact command + error output for issue reporting
Debugging checklist
- Reproduce with a single browser target first (
--browser=chromium). - Reproduce without custom profile/binary flags.
- Check whether the issue appears in both
devandbuild. - Keep one change at a time when touching manifest + entrypoint files.
Next steps
- Review security checklist.
- Review performance playbook.

