{"record":{"id":"15043621b96aac56","repo":"quasarframework/quasar","slug":"the-bex-manifest-version-specified-json-manifes","errorCode":null,"errorMessage":"The bex manifest version specified (${json.manifest_version}) is NOT yet officially supported by Quasar CLI. Things might go wrong.","messagePattern":"The bex manifest version specified \\((.+?)\\) is NOT yet officially supported by Quasar CLI\\. Things might go wrong\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"app-vite/lib/modes/bex/bex-utils.js","lineNumber":57,"sourceCode":"  }\n  if (json.version === void 0) {\n    json.version = version\n  }\n\n  if (json.manifest_version === 2) {\n    json.browser_action ||= {}\n\n    if (json.browser_action.default_title === void 0) {\n      json.browser_action.default_title = json.name\n    }\n  } else if (json.manifest_version === 3) {\n    json.action ||= {}\n    if (json.action.default_title === void 0) {\n      json.action.default_title = json.name\n    }\n  } else {\n    warn()\n    warn(\n      `The bex manifest version specified (${json.manifest_version}) is NOT yet officially supported by Quasar CLI. Things might go wrong.`\n    )\n    warn()\n  }\n\n  if (typeof quasarConf.bex.extendBexManifestJson === 'function') {\n    const overrides = await quasarConf.bex.extendBexManifestJson(json)\n    if (Object(overrides) === overrides) {\n      json = merge({}, json, overrides)\n    }\n  }\n\n  await quasarConf.ctx.appExt.runAppExtensionHook(\n    'extendBexManifestJson',\n    async hook => {\n      hook.api.logger.log(`Running \"extendBexManifestJson(json)\"`)\n      const overrides = await hook.fn(json, hook.api)\n      if (Object(overrides) === overrides) {","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/modes/bex/bex-utils.js#L39-L75","documentation":"createManifest officially supports manifest_version 2 and 3. If the merged manifest declares any other manifest_version value, Quasar CLI warns that the version is not officially supported and that things might go wrong, but continues the build after calling extendBexManifestJson.","triggerScenarios":"src-bex/manifest.json sets \"manifest_version\" to a value other than 2 or 3 (e.g. 4, a string like \"3\", or a typo'd number); the else branch after the v2/v3 handling emits the warning.","commonSituations":"Experimental/newer WebExtension manifest versions copied from browser documentation; manifest_version accidentally quoted as a string; typos like manifest_version: 13.","solutions":["Set \"manifest_version\": 3 (recommended, MV3) or 2 in src-bex/manifest.json.","If you really need an unsupported version, proceed knowing browser APIs may misbehave and test thoroughly in the target browser.","Ensure the value is a number, not a string (the check compares against numeric versions)."],"exampleFix":"// before (src-bex/manifest.json)\n{ \"manifest_version\": \"3\" }\n// after\n{ \"manifest_version\": 3 }","handlingStrategy":"validation","validationCode":"const v = require('./src-bex/manifest.json').all?.manifest_version\nif (typeof v !== 'number' || ![2, 3].includes(v)) {\n  throw new Error(`Unsupported manifest_version: ${JSON.stringify(v)}; use 2 or 3 (number)`)\n}","typeGuard":"const isSupportedManifestVersion = (v) => typeof v === 'number' && (v === 2 || v === 3)","tryCatchPattern":null,"preventionTips":["Use numeric 2 or 3 only — never a quoted string.","Pin the manifest to MV3 for modern Chromium-based targets.","Review copied manifests from other projects for exotic manifest_version values."],"tags":["bex","manifest","versioning","webextension"],"backgroundTag":"unsupported-manifest-version","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}