quasarframework/quasar · error
The BEX manifest requires a "manifest_version" prop, which i
Error message
The BEX manifest requires a "manifest_version" prop, which is currently missing.
What it means
createManifest merges src-bex/manifest.json variants and validates the result. A WebExtension/BEX manifest must declare manifest_version; when the prop is missing the warning is shown and createManifest returns { err: true }, aborting the BEX build.
Source
Thrown at app-vite/lib/modes/bex/bex-utils.js:21
import { merge } from 'webpack-merge'
import { warn } from '../../utils/logger.js'
export async function createManifest(quasarConf) {
let json
const bexManifestPath = quasarConf.metaConf.bexManifestFile
try {
json = JSON.parse(fse.readFileSync(bexManifestPath, 'utf8'))
} catch (err) {
warn('Could not read BEX manifest. Please check its syntax.')
return { err }
}
json = merge({}, json.all || {}, json[quasarConf.ctx.targetName] || {})
if (json.manifest_version === void 0) {
warn(
'The BEX manifest requires a "manifest_version" prop, which is currently missing.'
)
return { err: true }
}
const {
appPkg: { productName, name, description, version }
} = quasarConf.ctx.pkg
if (json.name === void 0) {
json.name = productName || name
}
if (json.short_name === void 0) {
json.short_name = json.name
}
if (json.description === void 0) {
json.description = description
}View on GitHub (pinned to 4841521b5f)
Solutions
- Add "manifest_version": 3 (or 2 for legacy) to src-bex/manifest.json, preferably under the "all" key.
- If the manifest is split per-target, ensure the current build target key (e.g. "chrome") actually contains manifest_version.
- Validate the JSON parses correctly (a malformed file may merge to an empty object).
Example fix
// before (src-bex/manifest.json)
{ "all": { "name": "My BEX", "version": "1.0.0" } }
// after
{ "all": { "name": "My BEX", "version": "1.0.0", "manifest_version": 3 } } Defensive patterns
Strategy: validation
Validate before calling
// CI pre-check
const m = require('./src-bex/manifest.json')
const merged = { ...m.all, ...(m[process.env.BEX_TARGET || 'chrome'] || {}) }
if (merged.manifest_version === undefined) {
throw new Error('src-bex/manifest.json must define manifest_version (2 or 3)')
} Prevention
- Always keep "manifest_version" in the shared "all" section of src-bex/manifest.json.
- Validate the manifest JSON in CI before running quasar build -m bex.
- Start new extensions from the scaffold manifest the CLI generates.
When it happens
Trigger: src-bex/manifest.json (including the 'all' key or the target-specific key) lacks a top-level "manifest_version" field; merge result json.manifest_version === undefined.
Common situations: Hand-written or trimmed manifest that omitted manifest_version; manifest defined only under a target key (e.g. 'chrome') that doesn't exist for the current target so the merge yields no fields; upgrading Quasar to a version that enforces the prop.
Related errors
- The bex manifest version specified (${json.manifest_version}
- Could not read BEX manifest. Please check its syntax.
- The file defined in bex manifest > background > service_work
- The file defined in bex manifest > background > scripts > "$
- The file defined in bex manifest > content_scripts > js > "$
AI-assisted analysis of quasarframework/quasar@4841521b5f (2026-08-30).
Data as JSON: /api/errors/11a1d644e870bb09.
Report an issue: GitHub.