Blog
2 min read

GitHub Actions Removed Node 20: JavaScript Actions Now Run on Node 24

On 23 September 2026 GitHub removed Node 20 from Actions runners; JavaScript actions now run on Node 24 and the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION escape hatch is gone. Why old actions break, how to update your workflows and your own actions, and the platform limits (macOS 13.4 and earlier, ARM32).

On 23 September 2026, GitHub removed Node 20 from GitHub Actions runners. JavaScript actions now run on Node 24, and the temporary ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out no longer works.

This is about the Node version that actions themselves run on (runs.using in an action's action.yml) — not the Node version your project uses. Your setup-node step with node-version: 22 still installs Node 22 for your build.

Why workflows broke

Actions written in JavaScript declare a runtime, e.g. runs: using: node20. With Node 20 gone, outdated versions of actions that still declare node20 fail, or are forced onto Node 24 where they may misbehave. Typical culprits are old pinned versions like actions/checkout@v4 or third-party actions that haven't been updated.

What to do in your workflows

  1. Update actions to current major versions. For the official ones, that's currently:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
- uses: actions/setup-python@v7
  1. Check third-party actions for a release that runs on node24, and update or replace any that are abandoned.
  2. Let Dependabot keep actions current so this doesn't happen again: (Dependabot Explained)
# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"

If you pin actions by commit SHA for security (a good practice), Dependabot updates the SHA and the comment with the version.

If you maintain an action

Change action.yml:

runs:
  using: node24
  main: dist/index.js

Test with Node 24, rebuild your dist/, and publish a new release (and move your major tag) promptly — users are blocked until you do.

Platform limits

Node 24 doesn't run on macOS 13.4 and earlier and doesn't officially support ARM32. Self-hosted runners on those platforms are no longer supported for JavaScript actions. This change applies to github.com and GitHub with data residency.

Source: GitHub Changelog: Node 20 is no longer available in GitHub Actions


EasySpawn works with GitHub Actions as your independent check on every pull request, and Claude Code can update workflow versions across your repos in one go. See how it works or join the waitlist.

Related: GitHub Actions CI Basics · GitHub Actions Secrets · Node.js 26 Becomes LTS · What Is CI/CD?

Keep reading