Skip to content

chore: upgrade Node.js to v24 LTS#1985

Merged
slesaad merged 3 commits into
mainfrom
chore/upgrade-node-v24
Apr 23, 2026
Merged

chore: upgrade Node.js to v24 LTS#1985
slesaad merged 3 commits into
mainfrom
chore/upgrade-node-v24

Conversation

@slesaad
Copy link
Copy Markdown
Member

@slesaad slesaad commented Apr 22, 2026

Summary

  • Bump .nvmrc from 22 to 24 (Node 24 is current active LTS)
  • Bump NODE env var from 22 to 24 in checks.yml
  • Declare NODE: 24 at workflow level in release.yml (previously referenced via ${{ env.NODE }} but never set — pre-existing bug)
  • Tighten package.json engines.node from ">=18.0.0" to ">=24.0.0" to match .nvmrc and CI intent
  • Bump release-it from ^17.10.0 to ^20.0.0 — release-it v17 caps Node at 22 (^18.18.0 || ^20.9.0 || ^22.0.0); v20 supports ^20.19.0 || ^22.13.0 || >=24.0.0
  • Pin @types/parse-path to 7.0.3 via yarn resolutions — release-it@20 transitively pulls in @types/parse-path@7.1.0, which is a deprecated stub with no index.d.ts and breaks tsc --noEmit ("Cannot find type definition file for 'parse-path'"). 7.0.3 is the last version with real type definitions.
  • Upgrade actions/setup-node@v3@v4, actions/checkout@v2/v3@v4, actions/cache@v3@v4

Why the release-it bump matters

Downstream consumers that consume veda-ui as a git submodule (e.g. US-GHG-Center/veda-config-ghg) and pin engines.node to Node 24 fail to yarn install because the transitive engine check on release-it rejects the runtime. Without this bump, Node 24 cannot propagate downstream.

Risk

  • release-it major version bump (17 → 20).release-it.js config uses standard hooks + git/npm/github plugin APIs, which are stable across this range. The local custom plugin at ./recommended-bump/index.mjs should continue to load via the standard plugin API. The Monday scheduled release will be the first real exercise; if it breaks, revert just the release-it line.

Test plan

  • yarn ts-check passes locally on Node 24 (after the @types/parse-path pin)
  • Checks workflow passes in CI (prep, lint, ts-check, test, playwright)
  • yarn install succeeds on Node 24
  • Manual trigger of release.yml with --debug flag (if available) to dry-run release-it v20
  • After merge + release, confirm veda-config-ghg can bump the submodule pointer and yarn install cleanly on Node 24

🤖 Generated with Claude Code

- Bump .nvmrc from 22 to 24 (Node 20 reached end-of-life April 2026;
  Node 24 is current active LTS)
- Bump NODE env var from 22 to 24 in checks.yml; declare NODE env in
  release.yml (was previously referenced but never set)
- Bump package.json engines.node from ">=18.0.0" to ">=20.19.0" to match
  release-it v20 minimum
- Bump release-it from ^17.10.0 to ^20.0.0 (v17 caps at Node 22; v20
  adds Node 24 support). Downstream consumers that pin engines.node to
  20.x (e.g. veda-config-ghg) were failing to yarn install after
  bumping to Node 24 because of the transitive release-it engine check.
- Upgrade actions/setup-node@v3 → @v4
- Upgrade actions/checkout@v2/v3 → @v4
- Upgrade actions/cache@v3 → @v4

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@slesaad slesaad requested a review from dzole0311 April 22, 2026 15:10
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 22, 2026

Deploy Preview for veda-ui ready!

Name Link
🔨 Latest commit a84ae2f
🔍 Latest deploy log https://app.netlify.com/projects/veda-ui/deploys/69e93670a37f210008cd2e7f
😎 Deploy Preview https://deploy-preview-1985--veda-ui.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

slesaad and others added 2 commits April 22, 2026 15:55
release-it@^20 pulls in @types/parse-path@7.1.0 transitively
(release-it → git-url-parse → git-up → parse-url → @types/parse-path).
v7.1.0 is a deprecated stub with no index.d.ts, which breaks
tsc --noEmit with "Cannot find type definition file for 'parse-path'"
since @types/* packages are auto-included as implicit type libraries.

Pin to 7.0.3 (last version with real type definitions) via yarn
resolutions to unblock ts-check on Node 24.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Match .nvmrc and workflow NODE env. The prior >=20.19.0 was overly
permissive and sent the wrong signal — this PR forces Node 24, so
engines should reflect that.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
slesaad added a commit to US-GHG-Center/veda-config-ghg that referenced this pull request Apr 22, 2026
Points to veda-ui commit a84ae2fe (NASA-IMPACT/veda-ui#1985), which:
- Bumps release-it ^17 → ^20 (v17 caps Node at 22; v20 supports Node 24)
- Pins @types/parse-path to 7.0.3 to unblock ts-check
- Tightens engines.node to >=24.0.0

This should unblock the Netlify yarn install, which was failing on
release-it@17's engine check against Node 24. This is a temporary
pointer to an unmerged branch for CI verification — before merging
this PR, bump to an actual released tag on veda-ui main.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@slesaad slesaad merged commit 8b44e5d into main Apr 23, 2026
18 of 19 checks passed
@slesaad slesaad deleted the chore/upgrade-node-v24 branch April 23, 2026 15:07
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