{"record":{"id":"dc2c047d68e2966f","repo":"neoclide/coc.nvim","slug":"info-version-requires-coc-nvim-required-ple","errorCode":null,"errorMessage":"${info.version} requires coc.nvim ${required}, please update coc.nvim.","messagePattern":"(.+?) requires coc\\.nvim (.+?), please update coc\\.nvim\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/extension/installer.ts","lineNumber":316,"sourceCode":"    let version: string | undefined\n    if (this.name) {\n      let folder = extensionPath(this.root, this.name)\n      if (isSymbolicLink(folder)) {\n        this.log(`Skipped update for symbol link`)\n        return\n      }\n      let obj = loadJson(path.join(folder, 'package.json')) as any\n      version = obj.version\n    }\n    this.log(`Using npm from: ${this.npm}`)\n    let info = await this.getInfo()\n    if (version && info.version && semver.gte(version, info.version)) {\n      this.log(`Current version ${version} is up to date.`)\n      return\n    }\n    let required = info['engines.coc'] ? info['engines.coc'].replace(/^\\^/, '>=') : ''\n    if (required && !semver.satisfies(workspace.version, required)) {\n      throw new Error(`${info.version} requires coc.nvim ${required}, please update coc.nvim.`)\n    }\n    let succeed = await this.doInstall(info, new Set())\n    if (!succeed) return\n    let jsonFile = path.join(this.root, info.name, 'package.json')\n    this.log(`Updated to v${info.version}`)\n    return path.dirname(jsonFile)\n  }\n\n  public getInstallArguments(exePath: string, url: string | undefined): { env: string, args: string[] } {\n    let env = 'production'\n    let args = ['install', '--ignore-scripts']\n    if (url && url.startsWith('https://github.com')) {\n      args = ['install']\n      env = 'development'\n    } else {\n      if (isNpmCommand(exePath)) {\n        args.push('--no-package-lock')\n        args.push('--omit=dev')","sourceCodeStart":298,"sourceCodeEnd":334,"githubUrl":"https://github.com/neoclide/coc.nvim/blob/50e974d9692461a69147d5cab146a8d3e439abe4/src/extension/installer.ts#L298-L334","documentation":" thrown in update() when the available extension update requires a coc.nvim version (engines.coc) that the running coc.nvim doesn't satisfy. Same compatibility gate as install, applied when upgrading an existing extension.","triggerScenarios":"Running extension update when the newest published version's engines.coc range (after ^→>= normalization) fails semver.satisfies against workspace.version.","commonSituations":"Extension released a breaking update requiring newer coc.nvim API; user on an old coc.nvim that had previously installed the extension fine.","solutions":["Update coc.nvim itself first, then retry the extension update.","Skip this update and stay on the current extension version until coc.nvim is upgraded.","Pin/downgrade the extension to a version compatible with your coc.nvim.","Inspect the requirement: npm view <name>@latest engines."],"exampleFix":"// before\n:CocUpdate  // 'coc-tsserver 1.9.0 requires coc.nvim >=0.0.90'\n// after\nfirst :PlugUpdate coc.nvim (or your plugin manager), restart, then :CocUpdate","handlingStrategy":"try-catch","validationCode":"const info = await installer.getInfo()\nconst required = (info['engines.coc'] || '').replace(/^\\^/, '>=')\nif (required && !semver.satisfies(cocVersion, required)) return /* skip update */","typeGuard":null,"tryCatchPattern":"try { await installer.update() } catch (e) { if (e.message.includes('requires coc.nvim')) { /* keep current version, prompt coc.nvim upgrade */ } else { throw e } }","preventionTips":["Update coc.nvim first in your update workflow","Handle update failures per-extension instead of aborting all updates","Pin extension versions compatible with your coc.nvim release"],"tags":["versioning","semver","compatibility","extension-update"],"backgroundTag":"engine-version-requirement-not-satisfied","analyzedSha":"50e974d9692461a69147d5cab146a8d3e439abe4","analyzedAt":"2026-08-31T11:17:23.966Z","schemaVersion":2},"datasetVersion":"2026-09-01T08:17:40.651Z"}