Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Yes. GitHub Actions removed Node 20 for running JavaScript actions on September 23, 2026. Workflows must use action releases that support Node 24; if you maintain an action, set its runs.using metadata to node24 and publish a release. This change does not, by itself, require your application’s build or test environment to use Node 24.

Is Node 20 deprecated in GitHub Actions?

It has moved beyond deprecation: as of September 23, 2026, GitHub Actions runners use Node 24 to execute JavaScript actions, and Node 20 is no longer available for that purpose. GitHub’s final notice confirming the removal applies to both github.com and GitHub with Data Residency. The temporary ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out is no longer available.

GitHub’s original deprecation announcement said runners would start switching to Node 24 by default on June 16, 2026, and that Node 20 would be removed on September 23. An August 25, 2026 update revised the removal date to September 23; the final notice confirms it has happened.

How do I fix the Node.js 20 actions are deprecated warning?

First identify which JavaScript actions your workflow invokes. The change belongs to the action runtime, so updating your application’s Node setting alone will not resolve an action that still requires Node 20.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Find action references. Search workflow files, typically under .github/workflows/, for uses: entries. Include third-party actions as well as GitHub-maintained ones.
  2. Check each action’s compatibility. Review its repository, release notes, and compatibility requirements. Identify releases that support Node 24; do not assume every action has a compatible update.
  3. Update the workflow reference. Change the uses: version to the latest compatible release for that action. Keep any other required configuration aligned with that release’s documentation.
  4. Run the workflow. Inspect the affected action steps and the project’s build or test steps for failures. This validates both the action update and any separately selected project runtime.

GitHub’s final migration notice directs action users to update to compatible versions. If a particular action has no Node 24-compatible release, consult its maintainers or choose a maintained alternative; the ended opt-out cannot restore Node 20.

If you maintain a JavaScript action

In the action metadata file, change the runtime declaration under runs to using: node24, then publish a new release containing the change. For example, the relevant YAML shape is:

runs:
  using: node24
  main: index.js

Keep the action’s existing entry point and other metadata as appropriate; the essential migration is the runtime value and a release users can reference. GitHub lists this change in its final notice.

Do I need to change my project’s Node version to 24?

Not just because JavaScript actions now run on Node 24. These are separate runtimes:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Action runtime: GitHub uses Node 24 to execute JavaScript actions.
  • Project runtime: Your workflow’s Node version for installing dependencies, building, or testing your application is a project choice. Select it according to the application’s compatibility needs.

GitHub’s current setup-node README shows how to specify a Node version explicitly and recommends specifying one rather than relying on the runner’s system default. For example:

- uses: actions/setup-node@v7
  with:
    node-version: 24

The README documents actions/setup-node@v7 and says v5 upgraded that action’s own runtime from Node 20 to Node 24; v5 requires runner version v2.327.1 or later. The README and release details can change, so check the repository documentation when editing a workflow. The example selects Node 24 for project commands; it is not a requirement imposed on every project by the JavaScript action migration.

Why might the runner’s default Node command also have changed?

There was a separate change to hosted runner images. GitHub’s runner-images announcement reported that Node 20 reached end of life on April 30, 2026, and that its removal from image tool caches was rolled out May 19–26, 2026. On affected images, the default node and npm command runtime changed from Node 20 to Node 22.

This image change concerns project commands that depend on an implicit system Node version; it is not the same as the Node 24 runtime for JavaScript actions. If your build assumes that plain node resolves to a particular version, specify the project version with actions/setup-node or an appropriate version file rather than relying on an image default.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Self-hosted runner compatibility checks

Before migrating on a self-hosted runner, check the runner’s operating system, architecture, and runner version. GitHub says Node 24 is incompatible with macOS 13.4 and earlier and does not officially support ARM32. Self-hosted runners on those macOS versions or ARM32 are no longer supported for this runtime. See GitHub’s deprecation announcement and final notice for the compatibility details.

The setup-node documentation also gives a runner-version requirement for setup-node v5: v2.327.1 or later. Check the documentation for the exact action release you use, rather than assuming all action releases share the same requirement.

Migration checklist

  • Update JavaScript action references to releases compatible with Node 24.
  • If you own an action, change runs.using to node24 and publish a release.
  • Do not rely on ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION to restore Node 20; the opt-out ended with its removal.
  • On self-hosted runners, verify operating system, architecture, and runner version against the action and runner documentation.
  • Choose and explicitly set the application’s build/test Node version separately from the action runtime.
  • Run the workflow and inspect action and project-runtime steps for errors.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.