neoclide/coc.nvim · error
${this.def} is not older than ${releaseAge} days.
Error message
${this.def} is not older than ${releaseAge} days. What it means
getInfo enforces a minimum release age: when releaseAge > 0, the resolved version must have been published before the cutoff (older than releaseAge days). If its publish time is missing/invalid or too recent, the installer throws this error. It exists to avoid installing versions that are too new (stability/pinning policies).
Source
Thrown at src/extension/installer.ts:230
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'],
name: res.name
} as Info
}
public async getInfoFromUri(): Promise<Info> {
let { url } = this
let repository: URLView on GitHub (pinned to 50e974d969)
Solutions
- Reduce the releaseAge setting (or set it to 0) to allow recent releases.
- Pin an explicit older version that satisfies the age requirement.
- Fix the system clock if the local date is wrong.
- Verify registry 'time' data for the version; a missing timestamp always triggers this.
Example fix
// before let info = await installer.getInfo() // releaseAge=90, version published 10 days ago -> throws // after installer.releaseAge = 7 // allow releases older than 7 days let info = await installer.getInfo()
Defensive patterns
Strategy: validation
Validate before calling
const published = Date.parse(registryRes.time?.[version])
const cutoff = Date.now() - releaseAge * 24 * 60 * 60 * 1000
if (!Number.isFinite(published) || published > cutoff) {
// version too new or missing timestamp; pin an older version or drop releaseAge
} Try / catch
try {
await installer.getInfo()
} catch (e) {
if (e.message.includes('is not older than')) {
installer.releaseAge = 0
await installer.getInfo() // accept the recent release
} else throw e
} Prevention
- Use small releaseAge values with fast-moving extensions.
- Pin explicit older versions when staleness matters.
- Verify registry 'time' metadata exists for the target version.
- Keep the system clock correct so the cutoff is meaningful.
When it happens
Trigger: getInfo (via info) with a version whose res.time[version] parses to a date after cutoff — i.e. the pinned/current version was published within the last releaseAge days, or its timestamp is missing entirely.
Common situations: Extensions that publish very frequently; registry missing time entries for the version; system clock set far in the past making cutoff later than publish dates; user configured a large releaseAge (e.g. 90 days) against fast-moving extensions.
Related errors
- ${this.def} has no release 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/5895cdd9a9239527.
Report an issue: GitHub.