JSON capabilities
| Capability | What it gives you |
|---|---|
| Manifest resource support | Handle Declarative Net Request (DNR) rulesets and managed schema files cleanly |
| JSON validation | Fail early on malformed JSON and invalid resource shape |
| Dev dependency tracking | Recompile when referenced JSON resources change |
| Placeholder replacement | Resolve supported $EXTENSION_* placeholders in emitted JSON |
JSON support
Common manifest fields:| Manifest field | File type expected |
|---|---|
declarative_net_request.rule_resources | .json |
storage.managed_schema | .json |
Sample JSON declaration in manifest.json
Example JSON declaration in manifest.json:
Output path
Extension.js emits JSON resources by feature context (for example, DNR and storage schema outputs):Development behavior
- Extension.js tracks manifest-referenced JSON files as file dependencies.
- JSON edits trigger recompilation.
- Some structural manifest changes related to JSON can require you to restart the dev server.
Validation behavior
Extension.js validates:- JSON syntax for referenced resources
- DNR ruleset shape (array-based ruleset expectations)
- managed storage schema shape (object-based expectations)
Environment placeholders
Extension.js replaces$EXTENSION_* placeholders in emitted .json assets during compilation, using the same pass as static HTML placeholder replacement.
Best practices
- Keep manifest-referenced JSON focused on browser-required resource formats.
- Validate JSON resources in CI before packaging.
- Prefer stable file paths in manifest to reduce restart-required structural changes in development.
- For app data consumed by code, consider JSON imports in JS/TS modules separately from manifest resource JSON.
Next steps
- Continue with icons in development.
- Learn about manifest development behavior.

