Payments are experiencing issues due to temporary restrictions in Russia. If your payment does not go through, please submit a support request.Our support team is available 24/7 — we are always here to help with hosting and server issues.We are now accepting requests for dedicated server rental and colocation services in our data center.Reminder: we recommend enabling backups for additional data protection.A new VPS/VDS lineup with NVMe storage and improved performance is now available.Maintenance work on some servers has been completed. All services are operating normally.
Article5 min readViews2

GitHub Actions Switches from Node.js 20 to 24: Why Site Deployment Might Stop

GitHub has removed Node.js 20 from the Actions environment and disabled the temporary workaround. We examine which automated builds and custom runners need verification to prevent site updates from halting.

Comments 0

Workstation with automated build stages and a test server
In this article

On September 23, GitHub permanently removed Node.js 20 from GitHub Actions execution environments. JavaScript actions now run on Node.js 24, and the temporary option to force the old version no longer works. For a site owner, this may initially appear as news solely for developers until the next update fails to build or deploy to the server.

It is important to distinguish between two environments. GitHub's change does not migrate the website itself to Node.js 24, nor does it alter PHP on the server. It affects the automated actions that constitute the code verification and publication pipeline: installing dependencies, building static assets, running tests, creating archives, and delivering the new version.

Where Incompatibility Arises

Custom JavaScript actions specify the runtime environment in a metadata file. GitHub recommends updating the runs.using value to node24 and releasing a new version of the action. If a project relies on third-party actions, you must switch to their latest releases that support Node.js 24.

A failure can occur even without your own JavaScript. An old release of an action for uploading artifacts, caching dependencies, or connecting to a server may internally depend on Node.js 20. The process file looks familiar, but the error occurs only at runtime.

You also cannot blindly update action links. Between major versions, parameters, permissions, or result formats may have changed. Proper migration includes reading the release notes and running a control test on a staging branch.

Why automated deployment matters to the business

Manually copying files seems like a simple fallback, but it is difficult to reproduce consistently. One employee might forget to clear the cache, another might forget to delete an outdated file, and a third might copy configuration from the test environment. An automated process is valuable not for speed, but for consistent execution.

For an online store, a useful pipeline checks at least the interface build, syntax, tests for critical components, and the presence of required files. Only after that does it create an immutable versioned package, save it, and then perform the deployment. If a build step fails due to an environment update, manually publishing code while bypassing checks is especially risky.

A pipeline failure should be viewed as a safety mechanism stopping. The site may continue to run, but the team temporarily loses a reliable way to release fixes.

A separate risk: in-house runners

GitHub clarifies restrictions for self-hosted runners: Node.js 24 is incompatible with macOS 13.4 and earlier versions and does not officially support ARM32. Such runners are no longer suitable for the new mode.

A self-hosted runner is often installed once and then forgotten. It remains on the build server for years, with access to the repository, deployment keys, and the internal network. Therefore, the check must cover not only the runner application version but also the operating system, processor architecture, and minimum versions of system libraries.

If an old device cannot be updated, it should be replaced or removed from the process. Adding an unofficial environment and workarounds may make the build appear functional, but it leaves an unsupported foundation next to project secrets.

What to check in the project now

Start with a list of all workflow files and the actions used. For each external action, record the author, the pinned version, and its purpose. Links to a random branch are more dangerous than a stable release: its contents can change without any modification in your repository.

Then, verify your own actions and command-line tools. Ensure they run on Node.js 24, do not use APIs removed from the runtime, and work with current dependency versions. A successful local run does not replace a test in GitHub Actions, as the environment and permissions differ.

The next stage is permissions. The updated action should not automatically be granted write access to the entire repository or access to all secrets. Token permissions must be set to the minimum necessary, and secrets should be passed only to the steps that actually require them.

Finally, perform a test build and deployment to a separate environment. Check not only the green status but also the actual result: page loading, static asset delivery, file versions, database migrations, and cache clearing. For a production site, there must be a clear procedure to roll back to the previous package.

Updating the runtime is an opportunity to verify the entire path to the server

The transition of GitHub Actions to Node.js 24 is not a feature to toggle on a website. It is a change to the foundation on which automated operations run. It is useful because it uncovers forgotten actions, obsolete runners, and processes that have not been executed in a clean environment for a long time.

If the process turns green again after the version change, the work is not yet finished. A reliable outcome is when the team knows which actions are involved in the release, where they come from, what permissions they have, and how to verify the published version. Then, the next environment update does not turn into an unexpected halt to development.

Discussion 0

Share your experience and ask questions. Comments without links appear after editorial review.

No comments yet. Start the discussion.