{"record":{"id":"7f815e520262a362","repo":"quasarframework/quasar","slug":"extendjsonfile-the-extension-tried-to-apply-th","errorCode":null,"errorMessage":"extendJsonFile() - The extension tried to apply these updates to \"${filePath}\" file: ${JSON.stringify(newData)}","messagePattern":"extendJsonFile\\(\\) - The extension tried to apply these updates to \"(.+?)\" file: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"app-vite/lib/app-extension/api-classes/InstallAPI.js","lineNumber":231,"sourceCode":"          ? parseJSON(fs.readFileSync(filePath, 'utf8'))\n          : {}\n        const data = merge({}, existingData, newData)\n\n        fs.ensureDirSync(path.dirname(filePath))\n        fs.writeFileSync(\n          filePath,\n          // if file exists, preserve indentation, otherwise use 2 spaces\n          stringifyJSON(data, {\n            indent: Object.keys(existingData).length !== 0 ? void 0 : 2\n          }),\n          'utf8'\n        )\n      } catch {\n        warn()\n        this.logger.warn(\n          `extendJsonFile() - \"${filePath}\" doesn't conform to JSON format: this could happen if you are trying to update flavoured JSON files (eg. JSON with Comments or JSON5). Skipping...`\n        )\n        this.logger.warn(\n          `extendJsonFile() - The extension tried to apply these updates to \"${filePath}\" file: ${JSON.stringify(newData)}`\n        )\n        warn()\n      }\n    }\n  }\n\n  /**\n   * Render a folder from extension templates into devland.\n   * Needs a path (to a folder) relative to the path of the file where render() is called\n   *\n   * @param {string} templatePath (relative path to folder to render in app)\n   * @param {object} scope (optional; rendering scope variables)\n   */\n  render(templatePath, scope) {\n    const dir = getCallerPath(1)\n    const source = path.resolve(dir, templatePath)\n    const rawCopy = !scope || Object.keys(scope).length === 0","sourceCodeStart":213,"sourceCodeEnd":249,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/app-extension/api-classes/InstallAPI.js#L213-L249","documentation":"This is the companion warning to the parse failure in api.extendJsonFile(). After skipping a non-parseable JSON file, it echoes the exact newData object the extension attempted to merge so the developer can apply the changes manually. It never appears without the preceding 'doesn't conform to JSON format' warning.","triggerScenarios":"api.extendJsonFile() catch branch runs (JSON.parse failure on the target file) and newData is a non-empty object; this warning prints JSON.stringify(newData) with the file path.","commonSituations":"Installing a Quasar App Extension that patches tsconfig.json or .vscode/settings.json — the second warning shows the props (compilerOptions, settings keys) you must merge yourself.","solutions":["Copy the JSON.stringify(newData) payload from this warning and deep-merge it into the target file manually.","Convert the target file to strict JSON, then re-run the extension install so the merge happens automatically.","If the intended changes are unwanted, ignore this warning after reviewing the payload."],"exampleFix":"// warning shows: {\"compilerOptions\":{\"jsx\":\"preserve\"}}\n// after (manual merge into tsconfig.json)\n{\n  \"compilerOptions\": { \"jsx\": \"preserve\", \"strict\": true }\n}","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  api.extendJsonFile('tsconfig.json', updates);\n} catch {\n  // read the logged 'tried to apply these updates' payload and merge manually\n}","preventionTips":["Read the logged newData payload after every extension install to confirm nothing was silently skipped.","Diff the target file against expected keys after installs."],"tags":["json","app-extension","install-script","manual-merge"],"backgroundTag":"json-parse-failure","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}