chore: migrate action runtime to Node 24#23
Conversation
GitHub deprecated Node 20 actions in September 2025; runners switch the default to Node 24 in June 2026. Bump runs.using to node24, align .nvmrc with the current Node 24 LTS (24.15.0, lts/krypton) and update the engines.node constraint accordingly. The bundled dist/ output is byte-identical when rebuilt on Node 24, so no source changes were required.
📝 WalkthroughWalkthroughUpdates the Node.js version requirement from 20 to 24 across three configuration files: .nvmrc specifies the pinned version (24.15.0), action.yml updates the GitHub Actions runtime environment, and package.json sets the minimum engine requirement (≥24). Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related issues
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
package.json (1)
23-25: Optional: consider an upper bound on the engines range.
">=24"lets future majors (25+) satisfy the constraint even though only Node 24 is exercised in CI and pinned in.nvmrc. If you want stricter signalling, use">=24 <25"(or similar). This mirrors how the previous>=20was open-ended, so it's only a nit and consistent with the existing style.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@package.json` around lines 23 - 25, Update the package.json "engines" declaration to include an upper bound so the Node version range doesn't accept future major releases; modify the "engines" object (the "node" value) to something like ">=24 <25" (or your chosen upper bound) so it matches CI/.nvmrc expectations while still allowing patch/minor updates.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@action.yml`:
- Around line 35-37: Document the breaking change introduced by changing
runs.using to node24: add a "Requirements" or "Breaking Changes" section in
README.md that explicitly lists the minimum self-hosted runner version
(v2.327.1+), macOS requirement (13.5/Ventura+), ARM32 behavior (falls back to
Node 20 with warning), GitHub-hosted support details (no ARM32), and the
deprecation timeline (Node 20 default deprecation on June 2, 2026); also update
release notes and coordinate publishing this release as a new major version
(e.g., v3) so consumers pinned to `@v2` are not upgraded automatically.
---
Nitpick comments:
In `@package.json`:
- Around line 23-25: Update the package.json "engines" declaration to include an
upper bound so the Node version range doesn't accept future major releases;
modify the "engines" object (the "node" value) to something like ">=24 <25" (or
your chosen upper bound) so it matches CI/.nvmrc expectations while still
allowing patch/minor updates.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 07d7fa83-0e32-4728-8552-647c20936cfe
📒 Files selected for processing (3)
.nvmrcaction.ymlpackage.json
| runs: | ||
| using: node20 | ||
| using: node24 | ||
| main: dist/index.js |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# Check if README and CHANGELOG exist
git ls-files | grep -i -E '(readme|changelog)' | head -20Repository: mattermost/action-mattermost-notify
Length of output: 89
🌐 Web query:
GitHub Actions node24 runner support requirements version 2.327.1
💡 Result:
GitHub Actions runner version 2.327.1 introduces support for executing Node.js 24 actions while maintaining backward compatibility with Node.js 20. This is the minimum runner version required for Node.js 24-compatible GitHub Actions (e.g., actions/checkout v5 requires runner v2.327.1 or newer). No additional OS or hardware requirements beyond standard self-hosted runner setup are specified for Node 24 support in this version. Node 24 binaries are bundled in the runner, but Linux ARM32 lacks a Node 24 binary, falling back to Node 20 with a warning. Full enforcement of Node 24 as default occurs later (runner v2.328.0+ with feature flags), with Node 20 deprecation starting June 2, 2026.
Citations:
- 1: https://redirect.github.com/actions/runner/releases/tag/v2.327.1
- 2: https://github.com/actions/runner/releases
- 3: Runner Support for executing Node24 Actions actions/runner#3940
- 4: Update github actions to node.js 24 compatible versions ethersphere/bee#5411
- 5: github-runner: missing Node24 runtime NixOS/nixpkgs#434372
- 6: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🌐 Web query:
GitHub Actions node24 macOS compatibility ARM32 support
💡 Result:
GitHub Actions supports Node.js 24 on macOS runners, which are available in both ARM64 (standard macos-latest, macos-15) and x64/Intel (macos-15-large, macos-15-intel) architectures. Node.js 24 is pre-installed and updated regularly on these images (e.g., v24.15.0 on recent macos-15-arm64 images). The setup-node action also tests Node 24 on macOS runners. There is no ARM32 support in GitHub Actions runners for any architecture, including macOS. GitHub-hosted macOS runners do not offer ARM32 hardware. Node.js 24 does not provide official binaries for ARM32 (armv7l); official builds are for ARM64 (AArch64), x64, and others. ARM32 (32-bit ARM) support is deprecated in GitHub Actions runners, particularly for Linux ARM32, with Node 24 enforcement handling it via warnings/fallbacks to Node 20, but macOS runners are unaffected as they lack ARM32. For self-hosted runners on hypothetical ARM32 macOS hardware (uncommon, as Apple Silicon is ARM64), Node 24 would not run natively without custom builds, and GitHub Actions runner software does not support it post-Node 20 deprecation.
Citations:
- 1: https://docs.github.com/actions/using-github-hosted-runners/about-github-hosted-runners
- 2: https://docs.github.com/en/actions/reference/runners/larger-runners
- 3: https://docs.github.com/actions/reference/runners/github-hosted-runners
- 4: https://github.com/actions/runner-images/
- 5: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
- 6: https://github.com/actions/runner-images/releases/tag/macos-15-arm64/20260421.0007
- 7: https://github.com/actions/runner-images/releases/tag/macos-15-arm64/20260414.0270
- 8: https://nodejs.org/dist/latest-v24.x/
- 9: Node20 will reach end-of-life (EOL) in April of 2026 release-drafter/release-drafter#1460
- 10: Node 24 enforcement + Linux ARM32 deprecation support actions/runner#4303
- 11: Future of ARMv7 support actions/runner#3983
🏁 Script executed:
# Check the repository structure to understand what we're working with
head -50 action.ymlRepository: mattermost/action-mattermost-notify
Length of output: 1086
🏁 Script executed:
# Check the README to see if breaking changes are documented
cat README.md | head -100Repository: mattermost/action-mattermost-notify
Length of output: 3996
🌐 Web query:
Node.js 24 system requirements macOS minimum version compatibility
💡 Result:
Node.js 24 requires macOS 13.5 (Ventura) or later for both Intel (x64) and Apple Silicon (arm64) architectures. This is the minimum supported version for pre-built binaries and running the runtime. To build Node.js from source, Xcode 16.1 or later (specifically Xcode Command Line Tools >=13 in v24.x docs, but updated to >=16.4 in main) is required, and binaries are compiled with -mmacosx-version-min=13.5 targeting macOS 13.
Citations:
- 1: https://www.redhat.com/en/blog/introduction-nodejs-24-from-red-hat
- 2: https://nodejs.org/en/blog/release/v24.0.0
- 3: https://github.com/nodejs/node/blob/v24.x/BUILDING.md
- 4: https://nodejs.org/en/blog/migrations/v22-to-v24
- 5: https://github.com/nodejs/node/blob/main/BUILDING.md
Breaking change for self-hosted runners — document the new minimum runner version requirement.
Switching runs.using to node24 introduces a breaking change for self-hosted runner consumers. This needs to be documented explicitly in README.md and considered for a major version bump when released:
- Self-hosted runners must be at v2.327.1 or newer; older versions will fail with
Parameter 'using: node24' is not supported. - macOS runners require version 13.5 or later (Ventura+); macOS 13.4 and lower are not supported.
- Linux self-hosted runners on ARM32 will fall back to Node 20 with a warning (official Node 24 binaries do not exist for ARM32).
- GitHub-hosted macOS runners (ARM64 and x64) support Node 24; GitHub-hosted runners do not offer ARM32.
- Beginning June 2nd, 2026, GitHub Actions runners will deprecate Node 20 by default.
Currently, the README.md does not document these requirements or the breaking nature of this transition. Recommend adding a "Requirements" or "Breaking Changes" section covering the minimum runner version and macOS version constraint so users on self-hosted infrastructure understand the impact before upgrading.
Confirm whether this release will be published under a new major tag (e.g. v2 → v3) to prevent workflows pinned to @v2 from automatically picking up the incompatible change.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@action.yml` around lines 35 - 37, Document the breaking change introduced by
changing runs.using to node24: add a "Requirements" or "Breaking Changes"
section in README.md that explicitly lists the minimum self-hosted runner
version (v2.327.1+), macOS requirement (13.5/Ventura+), ARM32 behavior (falls
back to Node 20 with warning), GitHub-hosted support details (no ARM32), and the
deprecation timeline (Node 20 default deprecation on June 2, 2026); also update
release notes and coordinate publishing this release as a new major version
(e.g., v3) so consumers pinned to `@v2` are not upgraded automatically.
|
Closing in favor of the #22 |
GitHub deprecated Node 20 actions in September 2025; runners switch the default to Node 24 in June 2026. Bump runs.using to node24, align .nvmrc with the current Node 24 LTS (24.15.0, lts/krypton) and update the engines.node constraint accordingly. The bundled dist/ output is byte-identical when rebuilt on Node 24, so no source changes were required.
Summary
Ticket Link