manifest
manifest declares the extension manifest (the content of the final manifest.json in the build output). It supports three styles: inline object, object split by browser (chromium/firefox), or file paths; it can also be omitted so the framework auto-loads manifest files from the source directory.
Type and default behavior
- Type:
ManifestConfig | ManifestPathConfig | undefined - Default: When omitted, the framework loads from
appDirorappDir/manifest/:manifest.json(shared or single browser)manifest.chromium.json(Chrome overrides)manifest.firefox.json(Firefox overrides)
- At build time, the branch is chosen by CLI
-b chrome|edge|brave|vivaldi|opera|santa|firefoxand merged with base, then written tooutputRoot/outDir/manifest.json.
Configuration styles
1. Single object (Chrome / Firefox shared)
All fields in one object. The framework injects entry paths for background, content_scripts, action, options_ui, side_panel, devtools_page according to the current target; other fields are output as-is.
Entry paths (e.g. popup/index.html, background/index.js) are computed by the framework from entry and outDir. You only need to keep these keys in manifest; see MANIFEST_ENTRY_PATHS for custom keys.
2. Split by browser (chromium / firefox)
When Chrome and Firefox need different manifest fields (e.g. Chrome action vs Firefox sidebar_action, or service_worker vs scripts), use chromium and firefox branches. The framework picks the branch by current -b and deep-merges with base.
3. Path config (relative to appDir)
To keep manifest in external JSON files, specify paths relative to appDir.
4. Omit (auto-load)
When manifest is not set, the framework looks for:
appDir/manifest.json,appDir/manifest.chromium.json,appDir/manifest.firefox.jsonappDir/manifest/manifest.json,appDir/manifest/manifest.chromium.json,appDir/manifest/manifest.firefox.json
Any found file is used as base and merged with chromium/firefox files in the same directory.
Specifying entry source files in manifest
You can specify the source file paths of entries directly in the manifest. The framework automatically recognizes and builds them, replacing the paths with the output artifact paths.
The framework will:
- Identify these source paths (
.ts,.tsx,.js,.jsx). - Treat them as entries.
- Replace them with build output paths (e.g.
background/index.js) in the finalmanifest.json.
Supported fields
You can use source paths in the following manifest fields:
Entry resolution priority
- Highest: Explicitly configured entries in
config.entry. - Second: Source paths specified in
manifest. - Third: Auto-discovery based on file conventions.
Priority
Related
- entry: Entry scripts and HTML determine manifest paths.
- appDir: Path config and auto-load are relative to appDir.
- outDir, outputRoot: Build output directory.

