· 5 min read

Vercel Stopped Accepting Node.js 20 Deployments on October 1. Your Next Deploy Is the One That Fails, and Here's the 10-Minute Audit.

Since October 1, Vercel has disabled Node.js 20 for new Builds and Functions. Existing deployments keep running, which is the trap: a side project you last touched in August will look healthy right up to the moment you push a typo fix and get an error instead of a deploy. Three weeks in, plenty of quiet projects are still sitting on the old runtime.

What changed, with dates

Node.js 20 reached end of life on April 30, 2026. Vercel posted its deprecation notice on July 14 and made it effective October 1. Projects that still use Node 20 for Functions will show an error when a new deployment is created. Functions already deployed continue to run and be invoked normally, so nothing breaks until you ship.

GitHub moved first. Its changelog for September 23 says Node 20 is no longer available on Actions runners, JavaScript actions now run on Node 24, and the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out is gone. Self-hosted runners on macOS 13.4 and earlier, or on ARM32, are no longer supported because Node 24 does not run there. First-party actions were already updated.

Per NodeSource's summary, Node 24 is now Vercel's default for new projects and Node 22 remains a supported LTS line, with Node 22 reaching end of life on April 30, 2027 and Node 24 on April 30, 2028.

The 10-minute audit

Start with Vercel. Update the CLI with npm i -g vercel@latest, then run vercel project ls --update-required. It lists projects that need a runtime upgrade, and it will find the forgotten ones you would otherwise discover by failing a deploy at a bad time.

For each flagged project, set the Node version in Project Settings or in package.json:

{
  "engines": {
    "node": "24.x"
  }
}

Then search the repository for other pins. The usual hiding places are .nvmrc, .node-version, Dockerfiles, CI configs and a volta block in package.json. A grep for node 20, node:20 and 20.x across a repo catches most of them.

Next, GitHub Actions. Open each workflow and look at the third-party actions it uses. Changing the Node version in your own test matrix does not change what runtime a third-party JavaScript action uses, so an abandoned action pinned to an old tag is the likeliest failure. The fix is a newer release of that action, or replacing it with a shell step.

Finally, deploy something small to each project and log process.version once, so you know which runtime you are actually on.

If you can't upgrade today

Vercel documents an escape hatch: add a Dockerfile.vercel at the project root and deploy as a container image. The example in its notice pins node:20-alpine. The Node.js setting in Project Settings does not apply to containers, so the deprecation does not block those deployments. The cost is that you now own the Node version and its security updates, and Node 20 no longer receives any. Vercel still recommends upgrading. I would treat the container route as a week of breathing room for a customer-facing project, not a destination.

What I'd actually do

Do the audit now, on a day when nothing is broken. The point of the exercise is to move the failure from a surprise during an urgent fix to a boring Tuesday. Upgrade to 24.x rather than 22.x unless a dependency forces your hand, since 24 gives you more runway and is where the platform defaults point.

If you have small projects you no longer care about, use this as a prompt to delete them or archive them. A project that exists only to fail someday is cost with no upside.

Where this could be wrong

Upgrading Node majors is not always uneventful. Native addons, old build tooling and packages that pinned engines can fail on 24, and I have no evidence about your dependency tree. Test locally first with the new runtime, reinstall dependencies from scratch, and keep the container fallback in your pocket until a clean build proves it unnecessary.

Author

Sources

Node.js 20 is being deprecated on October 1, 2026, Vercel changelog Node 20 is no longer available in GitHub Actions, GitHub changelog Vercel and GitHub Actions Are Ending Support for Node.js 20, NodeSource

Newsletter

The week, in one email.

The weekly summary of what happened and what it means for people who build alone. No spam, unsubscribe any time.

Form not showing? Subscribe on this page instead.

Related Posts