neoclide/coc.nvim · error
${name} ${info.version} requires coc.nvim >= ${required}, pl
Error message
${name} ${info.version} requires coc.nvim >= ${required}, please update coc.nvim. What it means
thrown in install() when the target extension declares an engines.coc requirement that the running coc.nvim version does not satisfy. coc.nvim checks compatibility before installing so the extension won't break at runtime.
Source
Thrown at src/extension/installer.ts:290
'dist.tarball': `${url}/archive/${branch}.tar.gz`,
'engines.coc': obj['engines'] ? obj['engines']['coc'] : null,
name: obj.name,
version: obj.version
}
}
private log(msg: string, isProgress = false): void {
this.emit('message', msg, isProgress)
}
public async install(): Promise<InstallResult> {
this.log(`Using npm from: ${this.npm}`)
let info = await this.getInfo()
logger.info(`Fetched info of ${this.def}`, info)
let { name, version } = info
let required = toText(info['engines.coc']).replace(/^\^/, '>=')
if (required && !semver.satisfies(workspace.version, required)) {
throw new Error(`${name} ${info.version} requires coc.nvim >= ${required}, please update coc.nvim.`)
}
let updated = await this.doInstall(info, new Set())
return { name, updated, version, url: this.url, folder: extensionPath(this.root, info.name) }
}
public async update(url?: string): Promise<string | undefined> {
if (url) this.url = url
let version: string | undefined
if (this.name) {
let folder = extensionPath(this.root, this.name)
if (isSymbolicLink(folder)) {
this.log(`Skipped update for symbol link`)
return
}
let obj = loadJson(path.join(folder, 'package.json')) as any
version = obj.version
}
this.log(`Using npm from: ${this.npm}`)View on GitHub (pinned to 50e974d969)
Solutions
- Update coc.nvim to a version satisfying the requirement.
- Install an older extension version compatible with your coc.nvim.
- Check required range: npm view <name> engines to see the engines.coc value.
- If needed temporarily and you know it works, pick a version whose engines.coc matches your coc.nvim.
Example fix
// before (old coc.nvim + new extension) :CocUpdate // fails: requires coc.nvim >= 0.0.82 // after :update the coc.nvim plugin, then :CocInstall coc-json
Defensive patterns
Strategy: try-catch
Validate before calling
const info = await installer.getInfo() const required = (info['engines.coc'] || '').replace(/^\^/, '>=') if (required && !semver.satisfies(cocVersion, required)) await upgradeCocNvim()
Try / catch
try { await installer.install() } catch (e) { if (e.message.includes('requires coc.nvim >=')) { await updateCocNvimThenRetry() } else { throw e } } Prevention
- Keep coc.nvim up to date before updating extensions
- Check engines.coc of extensions you pin
- Avoid distro-packaged coc.nvim if you need latest extensions
When it happens
Trigger: Installing an extension whose engines.coc is >= a version newer than the installed coc.nvim, while semver.satisfies(workspace.version, required) is false.
Common situations: Very new extension releases requiring a coc.nvim feature branch; users on distro-packaged (old) coc.nvim; pinned old coc.nvim in lockfiles.
Related errors
- ${info.version} requires coc.nvim ${required}, please update
- ${this.def} doesn't exists in ${registry}.
- ${this.def} has no release older than ${releaseAge} days.
- ${this.def} is not older than ${releaseAge} days.
- ${this.def} is not a valid coc extension, "engines" field wi
AI-assisted analysis of neoclide/coc.nvim@50e974d969 (2026-08-31).
Data as JSON: /api/errors/95cb117acb3450f0.
Report an issue: GitHub.