neoclide/coc.nvim · error
${this.def} has no release older than ${releaseAge} days.
Error message
${this.def} has no release older than ${releaseAge} days. What it means
During getInfo with a positive releaseAge, if the currently resolved latest version is newer than the cutoff (published within the last N days), the installer looks for an older release among the registry's versions. If no version was published before the cutoff, this error is thrown — no release satisfies the 'older than N days' pinning requirement.
Source
Thrown at src/extension/installer.ts:223
if (this.url) return await this.getInfoFromUri()
let registry = registryUrl()
this.log(`Get info from ${registry}`)
let buffer = await this.fetch(new URL(this.name, registry), { timeout: 10000, buffer: true })
let res = JSON.parse(buffer.toString())
let { age: releaseAge, exclude } = releaseAgeConfig()
if ([...exclude].some(pattern => minimatch(this.name, pattern))) releaseAge = 0
if (!this.version) {
this.version = res['dist-tags']['latest']
if (releaseAge > 0) {
let cutoff = Date.now() - releaseAge * 24 * 60 * 60 * 1000
let published = Date.parse(res.time?.[this.version])
if (!Number.isFinite(published) || published > cutoff) {
let versions = Object.keys(res.versions ?? {}).filter(version => {
let published = Date.parse(res.time?.[version])
return Number.isFinite(published) && published <= cutoff
})
this.version = semver.maxSatisfying(versions, '*') ?? undefined
if (!this.version) throw new Error(`${this.def} has no release older than ${releaseAge} days.`)
}
}
} else if (releaseAge > 0) {
let published = Date.parse(res.time?.[this.version])
let cutoff = Date.now() - releaseAge * 24 * 60 * 60 * 1000
if (!Number.isFinite(published) || published > cutoff) {
throw new Error(`${this.def} is not older than ${releaseAge} days.`)
}
}
let obj = res['versions'][this.version]
if (!obj) throw new Error(`${this.def} doesn't exists in ${registry}.`)
let requiredVersion = obj['engines'] && obj['engines']['coc']
if (!requiredVersion) throw new Error(`${this.def} is not a valid coc extension, "engines" field with coc property required.`)
extensionPath(this.root, res.name)
return {
'dist.tarball': obj['dist']['tarball'],
'engines.coc': requiredVersion,
version: obj['version'],View on GitHub (pinned to 50e974d969)
Solutions
- Lower or remove the releaseAge requirement so recent versions are accepted.
- Wait until the extension has a release older than the required number of days.
- Verify registry metadata includes accurate 'time' entries per version.
- Check the local clock; a wrong system date shifts the cutoff.
Example fix
// before let info = await installer.getInfo() // releaseAge=30, ext published 2 days ago -> throws // after installer.releaseAge = 0 // or omit pinning, accept the latest release let info = await installer.getInfo()
Defensive patterns
Strategy: retry
Validate before calling
const published = Date.parse(registryRes.time?.[version])
const ageDays = (Date.now() - published) / 86400000
if (!(ageDays > releaseAge)) {
// no release satisfies the pinning constraint; disable releaseAge or wait
} Try / catch
try {
await installer.getInfo()
} catch (e) {
if (e.message.includes('has no release older than')) {
installer.releaseAge = 0 // retry accepting latest
await installer.getInfo()
} else throw e
} Prevention
- Check the registry 'time' field before applying a releaseAge policy.
- Set releaseAge=0 for newly published extensions.
- Keep the system clock synchronized.
When it happens
Trigger: Info/install with releaseAge > 0 (e.g. pinned/paired install semantics) where the extension's registry metadata shows every published version is newer than releaseAge days — common for brand-new extensions or right after a first release.
Common situations: Installing a freshly published extension with a staleness policy; registry 'time' metadata missing or unparseable (Number.isFinite false) making all versions appear unqualified; time-travel/clock issues on the machine.
Related errors
- ${this.def} is not older than ${releaseAge} days.
- Command: ${command} not found
- ${this.def} doesn't exists in ${registry}.
- ${name} ${info.version} requires coc.nvim >= ${required}, pl
- ${info.version} requires coc.nvim ${required}, please update
AI-assisted analysis of neoclide/coc.nvim@50e974d969 (2026-08-31).
Data as JSON: /api/errors/0ef322433573f44b.
Report an issue: GitHub.