Run extension-wide logic in background contexts with clear support for both MV2-style background scripts and MV3 service workers.
Extension.js reads background entries from manifest.json, compiles them into dedicated background outputs, and applies browser-specific reload behavior during development.
| Capability | What it gives you |
|---|---|
| MV2/MV3 compatibility | Support background.scripts and background.service_worker entries |
| Dedicated background outputs | Emit background runtime files per active manifest shape |
| Reload-aware development | Apply hard reload/restart behavior for structural changes |
| Worker mode control | Respect background.type module/classic runtime behavior |
The following fields in manifest.json are used to declare background scripts:
| Manifest field | File type expected | Dev behavior |
|---|---|---|
background.service_worker |
.js, .ts, .mjs, .tsx |
hard reload flow |
background.scripts |
.js, .ts, .mjs, .tsx |
HMR-compatible path |
background.type can also affect runtime mode (module vs classic service worker behavior).
Below is an example of how to declare a background script within the manifest.json file:
Common outputs include:
background/service_worker.jsbackground/scripts.jsExact output depends on which manifest field is active after browser filtering.
background.type: "module" uses module worker semantics.background.service_worker for MV3-first extensions.