Post

reminder that @nuxt.com doesn’t commit to support specific versions of node - we commit to supporting active and maintenance node versions on a rolling basis šŸ‘‰ practically that means we may bump a dependency that is incompatible with an eol node version in a patch

Node.js@nodejs.org

Reminder: Node.js v20 is end-of-life (EOL) today. Upgrade + get security support for EOL versions here: https://nodejs.org/en/about/eol

That wasn't my question. I'm not implying this is wrong, it's a genuine question. Was e.g. Node 20 supported last month and not this month?

`engines` definitions are meant to "specify the version of <engine> that your stuff works on". You really shouldn't distribute a definition if you don't support it. That said, if you're trying to gate the engine requirements of your transitive deps from consumers then you should probably own that.

> specify the version of <engine> that your stuff works on that’s how we use it but that is a descriptive statement and i don’t see how changing it is a breaking change particularly when we are very clear that we expect nuxt users to stay on maintained versions of node

1 repost0 likes

Surely it's a descriptive statement that you commit to being true? Like, you wouldn't use a feature that only exists in Node 24 and above or dependency that relies on it, but as of this week you would for features that only exist in Node 22. That to me is a supporting a particular version of Node.

As I said I think dropping support for EOL Node is good and I'd not do a major for it, but I think you're drawing a false distinction saying it doesn't count as supporting particular Node versions and isn't a breaking change.

maybe the best analogy i can draw is browserslist: ā€˜maintained node versions’ we aren’t committing to support a given version beyond eol this is a limitation in the expressiveness of engines.node, which i wish supported a string like ā€˜lts/-1’, like nvm

If `node` distributed itself on npm like bun & deno then you could imagine leveraging dist-tags for this exact purpose (although the `-1` thing is a bit messy/unconventional).