Skip to content

Enforce Node 24.19.0 / npm 11.17.0 via engines and engine-strict - #102

Merged
lakchote merged 3 commits into
mainfrom
nicolas-enforceNodeNpmEngines
Aug 27, 2026
Merged

lakchote merged 3 commits into
mainfrom
nicolas-enforceNodeNpmEngines

Conversation

@NicolasBonet

@NicolasBonet NicolasBonet commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Details

Enforces the Node/npm toolchain for this repo as a prerequisite for the npm min-release-age supply-chain cooldown. min-release-age requires npm >= 11.10.0 and is silently ignored by older npm versions. Node 24's earlier bundled npm is below that floor, while 24.19.0 bundles npm 11.17.0 — staying on the same 24.x LTS line avoids CI-image risk.

  • .nvmrc: bumped from 24 to 24.19.0.
  • package.json: added an engines field with exact pins (node 24.19.0, npm 11.17.0, matching App). This repo is not published to npm, so exact pins are appropriate.
  • .npmrc: added with engine-strict=true so npm install/npm ci fail loudly (EBADENGINE) under a non-compliant toolchain. Removed the stale .npmrc entry from .gitignoreactions/setup-node writes auth config to a user-level npmrc via NPM_CONFIG_USERCONFIG, not the project file.
  • package-lock.json: regenerated under Node 24.19.0 / npm 11.17.0 (metadata-only changes, no dependency version changes).

All CI workflows already read the Node version via node-version-file: .nvmrc, so no workflow changes were needed.

Related Issues

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

Manual Tests

  1. Under Node v24.19.0 / npm 11.17.0: npm install and npm ci both complete successfully.
  2. Under the old toolchain (Node v20.20.0 / npm 10.8.2): npm install --dry-run fails with npm error code EBADENGINERequired: {"node":"24.19.0","npm":"11.17.0"}, Actual: {"npm":"10.8.2","node":"v20.20.0"}.

Linked PRs

None.

@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

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

@NicolasBonet NicolasBonet changed the title Enforce Node 26.5.0 / npm 11.17.0 via engines and engine-strict Enforce Node 24.19.0 / npm 11.17.0 via engines and engine-strict Aug 25, 2026
@NicolasBonet

Copy link
Copy Markdown
Contributor Author

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

exfy-clabot Bot added a commit to Expensify/CLA that referenced this pull request Aug 25, 2026
@NicolasBonet
NicolasBonet requested a review from a team August 25, 2026 14:14
@melvin-bot
melvin-bot Bot requested review from lakchote and removed request for a team August 25, 2026 14:14

@lakchote lakchote left a comment

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.

Could we also add .npmrc to the paths filters in lint.yml, oxfmt.yml, test.yml and typecheck.yml? This PR makes .npmrc an input to those jobs, but a follow-up that changes only .npmrc (like the planned min-release-age) currently triggers none of the workflows that run npm ci on the branch.

Adding it next to .nvmrc keeps those changes covered

@NicolasBonet

Copy link
Copy Markdown
Contributor Author

Could we also add .npmrc to the paths filters in lint.yml, oxfmt.yml, test.yml and typecheck.yml? This PR makes .npmrc an input to those jobs, but a follow-up that changes only .npmrc (like the planned min-release-age) currently triggers none of the workflows that run npm ci on the branch.

Adding it next to .nvmrc keeps those changes covered

Added @lakchote

@NicolasBonet
NicolasBonet requested a review from lakchote August 26, 2026 18:28

@lakchote lakchote left a comment

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.

LGTM

@lakchote
lakchote merged commit bb00632 into main Aug 27, 2026
9 of 10 checks passed
@lakchote
lakchote deleted the nicolas-enforceNodeNpmEngines branch August 27, 2026 14:21
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.

2 participants