Drop Node 20 support and remove the node-gyp pin it requires
Author: WikiRikCreated Sep 3, 2026Updated Sep 7, 2026
Labelstype: refactor
Summary
Drop Node 20 once it is out of maintenance, and remove the workarounds that only exist to keep it building.
Node 20 reaches end-of-life on 2026-04-30. We currently test on Node 20, 22 and 24, and @sequelize/core declares "node": "^20.9.0 || ^22.11.0 || >=24.0.0".
This issue is to track the changes that we'll need to do then. It will be picked up by @WikiRik or one of the other maintainers. This one is not one for the community to take on.
What to change
- Drop
20from everynode-versionmatrix in.github/workflows/ci.yml(the install/build, unit test, Windows, and per-dialect jobs all list it). - Update the
engines.noderange inpackages/core/package.json(and any other package that declares one) to drop^20.9.0. - Remove the
node-gypresolution from the rootpackage.json:This pin exists only because"node-gyp@npm:latest": "11.5.0"node-gyp@latestis now 13, which requires Node >= 22, whilepg-nativebuilds throughnode-gypand CI still tests Node 20. Once Node 20 is gone, the pin can go andnode-gypcan float again. It is worth removing promptly: holding a build tool back is the kind of thing that quietly rots, and the reason for it is not discoverable from the JSON itself. - Re-run
yarn installto refresh the lockfile, and confirmpg-nativestill builds.
Context
The node-gyp pin was introduced alongside a lockfile refresh. It is a deliberate, temporary hold rather than a considered version choice, and this issue exists so it does not outlive its reason.
This issue was generated with Claude Code
Source: sequelize/sequelize