Skip to content

Bump Node to 24.19.0 and enforce npm >= 11.10.0 toolchain - #56

Merged
AndrewGable merged 2 commits into
mainfrom
nicolas-node-24-19-devengines
Sep 2, 2026
Merged

Bump Node to 24.19.0 and enforce npm >= 11.10.0 toolchain#56
AndrewGable merged 2 commits into
mainfrom
nicolas-node-24-19-devengines

Conversation

@NicolasBonet

@NicolasBonet NicolasBonet commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Details

Prep for rolling out npm's min-release-age cooldown (https://github.com/Expensify/Expensify/issues/636594). That setting requires npm >= 11.10.0, so this bumps and enforces the toolchain first:

  • .nvmrc: 24.11.0 -> 24.19.0
  • package.json: replace engines with devEngines requiring node >= 24.19.0 / npm >= 11.10.0 (same block as expensify-common). devEngines only applies to contributors, not consumers of the published package, so engines is dropped rather than maintaining two sets of requirements.
  • package-lock.json: root entry synced to drop engines, no dependency changes

No .npmrc or min-release-age yet — that's a follow-up. CI already reads .nvmrc.

Related Issues

For https://github.com/Expensify/Expensify/issues/678052

Manual Tests

  1. nvm use 24.19.0 && npm ci succeeds
  2. npm run ts, npx eslint src, npx prettier . --check pass
  3. nvm use 24.11.0 && npm ci --ignore-scripts fails with EBADDEVENGINES

Linked PRs

N/A

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@NicolasBonet

Copy link
Copy Markdown
Contributor Author

I have read the CLA Document and I hereby sign the CLA

@NicolasBonet
NicolasBonet marked this pull request as ready for review September 2, 2026 16:26
exfy-clabot Bot added a commit to Expensify/CLA that referenced this pull request Sep 2, 2026
Comment thread package.json
"node": ">=20.10.0",
"npm": ">=10.2.3"
},
"devEngines": {

@AndrewGable AndrewGable Sep 2, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see two options here:

  1. Continue using engines, as we have historically. We could update it to Node >=24.19.0 and npm >=11.10.0, although it only warns without engine-strict, I think it copies our existing patterns.

  2. Treat this strictly as a development-toolchain requirement. Keep devEngines, but remove engines since the library itself does not require Node 20+. .nvmrc ensures contributors and CI use an npm version that supports devEngines, and CI’s npm install/npm ci will catch mismatches between them.

Option 2 seems more technically accurate and avoids maintaining two different sets of requirements. The remaining caveat is that npm <10.9 ignores devEngines if someone bypasses .nvmrc.

cc @roryabraham for other thoughts.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏼 to keeping devEngines and dropping engines

@NicolasBonet NicolasBonet Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Went with option 2 in 86ef72a — dropped engines from package.json and the lockfile root, kept devEngines.

@AndrewGable
AndrewGable merged commit 6448f80 into main Sep 2, 2026
6 checks passed
@os-botify

os-botify Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

🚀 Published to npm in 1.0.35 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants