Firefox engine
The Firefox engine is a real Gecko that boots in the page and installs your extension, in place of the Chromium emulator. Reach for it when you want Firefox's own verdict on a build, in Firefox's own words.
Quick start
preview-firefoxPress Switch to Firefox in the actions bar above the preview. The address gains a /firefox suffix, the engine boots, and the build installs. Type the command above in the terminal and it prints whether the engine is alive, which build it judged, and the verdict.
How it works
A switch, not a second page
The actions bar names the runner, Chromium runner or Firefox runner, with a link to switch. Each engine has its own address: /new/chromium and /new/firefox, /drafts/<id>/chromium and /drafts/<id>/firefox. The switch is drawn only when the browser can run the engine: WebAssembly JSPI, a viewport at least 768 px wide, and a fine pointer such as a mouse.
Who can open it
The engine answers only to logins on its own allowlist, which is separate from the workbench's. Any other login, and any address outside the workbench, gets a 404. Today that list is the owner's.
What Gecko gets
Firefox refuses background.service_worker, so the build is adapted on its way to Gecko: service_worker becomes background.scripts, firefox:-prefixed manifest keys apply, chromium:-prefixed keys drop, and a browser_specific_settings.gecko.id is added. Scripts and styles stay the Chromium build, so an API only Chrome ships can still fail there, and whatever Gecko refuses is reported in its own words.
Reading the verdict
preview-firefox prints the engine's liveness, the current build, and one of three verdicts: booted and painted the first build, applied, or refused with Gecko's sentence. A refusal exits non-zero. A verdict for an older build carries a [stale: ...] mark until the newer build is answered. The same refusal sentence appears above the terminal as Firefox refused this build, and preview-errors carries a firefox: line while the engine is up.
Reference
| Address | Engine |
|---|---|
/new/chromium, /drafts/<id>/chromium | Chromium emulator |
/new/firefox, /drafts/<id>/firefox | Real Gecko |
| Requirement | Value |
|---|---|
| WebAssembly JSPI | Required |
| Viewport | 768 px or wider, with a fine pointer |
| Login | On the engine allowlist |
Output of preview-firefox | Meaning |
|---|---|
firefox: booted and painted the first build | The engine is up and the first build installed |
firefox: applied | The current build installed |
firefox refused: <sentence> | Gecko refused the install, exit 1 |
No verdict yet: the engine is booting or the first build is still applying. | Wait and run it again |
When it fails
- There is no Switch to Firefox link. The browser has no WebAssembly JSPI, the window is narrower than 768 px, or the pointer is coarse. Open the workbench on a desktop Chrome or Edge 137 or newer, or Firefox 153 or newer.
- The
/firefoxaddress answers Not found. Your login is not on the engine's allowlist. The Chromium address still works. preview-firefoxsays no Firefox tab has spoken yet. The engine has not booted. Switch to Firefox and wait for the first paint, then run it again.- Gecko refused the build. Read the sentence word for word. A
background.service_workerrefusal means the adaptation did not apply, and a refused permission is one Firefox does not grant. - The download still says chrome. The built zip is the Chromium build. The Gecko adaptation happens in the preview only.
Next
- Live preview for the Chromium emulator
- Terminal for
preview-firefoxbeside the other commands - Download and run locally for running the build in a browser of your own