Node.js 22 end of life (30 April 2027): migrate to Node.js 24 or 26

Node.js 22 ends 30 April 2027. Lambda blocks updates 31 Aug 2027; Azure Linux Consumption needs Flex for 24. Pick 24 or 26 and move now.

Read time
17 min
Word count
2.5K
Sections
10
FAQs
8
Share
Developer at a standing desk running tests for a runtime migration, with Node.js, AWS Lambda and Azure Functions logos
On this page · 10 sections
  1. What ends on 30 April 2027, and what keeps running
  2. Managed platform dates
  3. Node.js 24 or Node.js 26: picking the target
  4. Breaking changes from Node.js 22 to Node.js 24
  5. Additional breaking changes from Node.js 24 to Node.js 26
  6. Worked example: what each path buys
  7. Compliance, India and data protection
  8. Migration checklist
  9. How eCorpIT can help
  10. References

Summary. Node.js 22 (Jod) reaches end of life on 30 April 2027, according to the Release Working Group's schedule.json. After that date the project publishes no further 22.x releases, including security fixes. There are two sensible targets. Node.js 24 (Krypton) moved to Maintenance LTS on 20 October 2026 and ends on 30 April 2028. Node.js 26 (Lithium) became LTS on 28 October 2026, stays in Active LTS until 20 October 2027 and ends on 30 April 2029. Managed platforms follow the upstream date closely. AWS Lambda deprecates nodejs22.x on 30 April 2027 and blocks function updates on 31 August 2027. Azure Functions and Azure App Service end Node.js 22 support on the same day, and Linux Consumption function apps must move to Flex Consumption before they can reach 24. Google Cloud Run functions decommissions nodejs22 on 31 October 2027. Vercel has published no cut-off. Our recommendation: move to Node.js 26 wherever your platform runs it at general availability, because it buys 12 more months than 24. Choose 24 where 26 is not yet available, which on 1 November 2026 includes Azure Functions.

About this article. For teams running Node.js 22 in production. Dates were checked on 1 November 2026 against the Node.js Release Working Group, nodejs.org release notes and AWS, Microsoft, Google Cloud and Vercel documentation. Platform schedules change, so re-check before booking. The compliance notes read the DPDP Act 2023 as published by MeitY and are not legal advice. No vendor paid for inclusion. Researched with AI assistance and reviewed by our editorial team.

For the version decision in depth, see our Node.js 24 vs 26 vs 27 comparison, and for the annual release model, our explainer on Node.js 27 and the one-major-a-year schedule.

What ends on 30 April 2027, and what keeps running

End of life is a support event, not a shutdown. A Node.js 22 binary will keep executing your code on 1 May 2027. What stops is the upstream supply of fixes: when a vulnerability is disclosed in a newer line and also affects 22.x, the project will not cut a 22.x release. Popular packages also drop end-of-life lines over time, so the risk grows gradually rather than arriving on one day.

The project publishes its support claims in schedule.json. Latest releases come from the nodejs.org release index, and the expected 27 codename from the project's list.

Line Codename First release LTS start Maintenance start End of life Latest release (1 Nov 2026)
22.x Jod 24 Apr 2024 29 Oct 2024 21 Oct 2025 30 Apr 2027 22.23.4
24.x Krypton 6 May 2025 28 Oct 2025 20 Oct 2026 30 Apr 2028 24.22.2
26.x Lithium 5 May 2026 28 Oct 2026 20 Oct 2027 30 Apr 2029 26.13.0
27.x Magnesium (expected, may change) Alpha 28 Oct 2026; Current 22 Apr 2027 20 Oct 2027 None (Active LTS throughout) 30 Apr 2030 27.0.0-alpha.0.0.0

Two details are easy to miss. First, Node.js 24 is already in Maintenance LTS, which means critical bug fixes and security updates; new features typically land there only when they help migration. Second, the Release Working Group chooses the exact date of a phase change no later than the first day of that month and gives at least 14 days' notice of any change, so a move away from 30 April 2027 would normally be visible by mid-April.

If you are still on Node.js 20, you are already past end of life (30 April 2026) and also inherit every breaking change from 20 to 22, covered in the project's v20 to v22 migration notes.

Managed platform dates

Most teams meet the end-of-life date through a platform, and each platform enforces it differently.

Platform Node.js 22 end of support What happens next Node.js 24 Node.js 26
AWS Lambda Deprecation 30 Apr 2027 Block create 29 Jul 2027; block update 31 Aug 2027 GA; deprecation 30 Apr 2028 Public preview since Aug 2026; GA targeted Nov 2026
Azure Functions End of support 30 Apr 2027 Apps keep running, no patches; scaling may be limited GA; end of support 30 Apr 2028 Not listed
Azure App Service Support ends 30 Apr 2027 Apps keep running, no security updates or customer service Named target in the notice Linux preview since 11 Sep 2026; no GA date found
Google Cloud Run functions Deprecation 30 Apr 2027 Decommission 31 Oct 2027; no create or update after that GA; deprecation 30 Apr 2028, decommission 31 Oct 2028 Preview
Vercel No date published Node.js 20 precedent: disabled for new deployments five months after upstream end of life Available GA and default since 29 Oct 2026

AWS Lambda

AWS's runtime table lists nodejs22.x (Amazon Linux 2023) with deprecation on 30 April 2027, block function create on 29 July 2027 and block function update on 31 August 2027. At deprecation AWS may stop patching the runtime, the functions lose eligibility for technical support, and the console stops letting you create or update them, though the CLI, SAM and CloudFormation still work. From 31 August 2027 you cannot update code or configuration on a nodejs22.x function, but you can still switch it to a supported runtime, and invocations continue.

AWS sends notices by email and through the Health Dashboard at least 180 days before deprecation, which for nodejs22.x means from about 1 November 2026. Functions deployed as container images get no such notices.

The target runtime is the bigger question. nodejs26.x launched as Lambda's first public preview runtime in August 2026. Preview runtimes carry no SLA or support, log a warning on every cold start and may change in breaking ways. Its runtime page gives November 2026 as an indicative month for general availability. The identifier does not change at general availability, so functions tested on the preview graduate without a configuration change.

Azure Functions

Microsoft's supported languages page, last updated on 22 October 2026, lists Node.js 24 (end of support 30 April 2028) and Node.js 22 (30 April 2027) as generally available. Node.js 26 is not listed yet. The bigger constraint is the hosting plan: Microsoft says Node.js 22 is the last version Linux Consumption apps will get, and that the Linux Consumption option itself retires on 30 September 2028. A Linux Consumption app therefore cannot reach Node.js 24 in place. It must move to the Flex Consumption plan, which creates a new app alongside the old one; az functionapp flex-migration list shows which apps are ready.

Under Azure's language support policy, apps on a retired language version can still be created, deployed and run, but receive no security patches or optimisations, and Microsoft may limit them to a single instance.

Azure App Service

Microsoft published its App Service notice on 24 August 2026. Node 22 LTS support ends on 30 April 2027, apps keep running, security updates and customer service for that version stop, and Node 24 LTS is the named target. App Service follows community timelines and controls minor and patch versions itself. Node 26 has been in preview on Linux since 11 September 2026, with no general availability date found, and the configuration guide still uses Node 24 in its examples, so check with az webapp list-runtimes. Once a version reaches end of life it leaves the runtime dropdown, though existing apps should be unaffected. Our note on the App Service notice covers who receives the reminders.

Google Cloud Run functions

Google's runtime support schedule, last updated on 26 October 2026, deprecates nodejs22 on 30 April 2027 and decommissions it on 31 October 2027. During deprecation you can generally still create and redeploy; after decommission you cannot, and existing functions may be disabled. Google starts notifications 90 days before deprecation. nodejs24 runs on the newer google-24 stack rather than google-22, so rebuild any native dependencies. nodejs26 is in Preview, which means deploying with gcloud beta functions deploy.

Vercel

Vercel's Node.js versions page lists 26.x (default), 24.x and 22.x. Node.js 26 became generally available and the default on 29 October 2026, the day after its LTS promotion. Vercel has not announced a Node.js 22 deprecation date. For Node.js 20 it announced on 14 July 2026 and disabled the version for new deployments on 1 October 2026, 154 days after the upstream end of life; existing deployments kept serving traffic. Expect something similar for 22, but plan against 30 April, not the precedent.

If engines.node in package.json allows 26 (for example >=20), the next deployment builds on Node.js 26 automatically. Vercel also says Node.js 26 switches built-in fetch to HTTP/2 by default through Undici 8; set VERCEL_FETCH_DISABLE_H2=1 to keep HTTP/1.1.

Node.js 24 or Node.js 26: picking the target

Both are LTS lines. The difference is how long the move lasts and how much changes underneath you.

Pick Node.js 24 if Pick Node.js 26 if
Your platform does not yet offer 26 at GA (Azure Functions on 1 Nov 2026) Your platform runs 26 at GA (Vercel today; Lambda once nodejs26.x leaves preview)
You want the smallest jump from 22, with fewer removals You want support to 30 April 2029 and one migration instead of two
Native addons or vendor SDKs have not certified 26 yet You want the Temporal API, V8 14.6 and Undici 8 without flags
You accept another move by 30 April 2028, to 26 or to 27 (LTS 20 October 2027) Your team can absorb the 24-to-26 removals in the same test cycle

A move from 22 to 24 buys 12 months of upstream support beyond 22's end of life. A move from 22 to 26 buys 24. Under the new release model, the next safe hops from 26 are Node.js 27 or Node.js 28, which the project's timeline puts at LTS in October 2028, six months before 26 ends. Node.js 28 is not a safe hop from 24, which ends six months before that.

Breaking changes from Node.js 22 to Node.js 24

The project's v22 to v24 migration guide and the 24.0.0 release notes list the changes that land when you cross 23.0.0 and 24.0.0. These are the ones most likely to affect real services, in our judgement:

  • OpenSSL 3.5 at security level 2. RSA, DSA and DH keys shorter than 2048 bits and ECC keys shorter than 224 bits are rejected, and RC4 cipher suites are prohibited. Old internal CAs, legacy partner endpoints and test fixtures with 1024-bit keys can fail at handshake.
  • Platform binaries. No official 32-bit Windows binaries since 23.0.0 and no 32-bit armv7 Linux binaries since 24.0.0. macOS binaries need 13.5 or later; Linux binaries still need glibc 2.28 or later.
  • Stricter behaviour and validation. Stricter fetch() compliance, AbortSignal validation, stream and pipe errors that now throw, Buffer behaviour changes and new test runner defaults (the runner now waits for subtests automatically).
  • Removals and deprecations. tls.createSecurePair is removed and process.assert is gone (since 23). url.parse() and SlowBuffer are runtime-deprecated, so expect new warnings in logs.
  • AsyncLocalStorage now uses AsyncContextFrame by default. APM agents and request-context libraries should be on versions that support 24.
  • Native addons. V8 13.6 may require C++20 for addons that link against V8 APIs. The project recommends Node-API where possible to reduce rebuild churn.
  • npm 11 ships with Node.js 24, so check lockfile and npm ci behaviour in CI before the runtime switch.

The userland migrations team publishes codemods for several of these. For example, npx codemod run @nodejs/tls-create-secure-pair-to-tls-socket and npx codemod run @nodejs/fs-access-mode-constants rewrite the affected call sites.

Additional breaking changes from Node.js 24 to Node.js 26

Going straight to 26 adds the 25.0.0 and 26.0.0 changes, listed in the 26.0.0 release notes and flagged in the 26.13.0 LTS release.

  • V8 14.6 and Undici 8. The engine moves from 13.6 to 14.6 and the HTTP client from Undici 7 to 8. Watch outbound HTTP behaviour, connection reuse and any code that depends on Undici internals.
  • Temporal is enabled by default. Libraries that polyfill it should detect the native version. Our Temporal migration guide covers moving off Date.
  • Removals. http.Server.prototype.writeHeader() is removed (use writeHead()), the legacy _stream_* modules are removed, and the --experimental-transform-types flag is gone. TypeScript enums and parameter properties now need a build step or a package such as tsx.
  • New runtime deprecations. module.register() is runtime-deprecated, which can affect custom loaders and some APM and mocking tools. Crypto deprecations DEP0203 and DEP0204 are now runtime warnings, and DEP0182 is end of life.
  • Native addon ABI. NODE_MODULE_VERSION moves to 147, so every compiled addon must be rebuilt or fetched as a 26-compatible prebuild.
  • libatomic on Linux. Since Node.js 25, the official Linux binaries link against libatomic, which may need installing separately depending on your distribution. Check your own Dockerfiles, especially on minimal base images.
  • localStorage now returns undefined when no storage file is configured.

Worked example: what each path buys

Take a team that finishes its migration on 1 April 2027, four weeks before Node.js 22's end of life.

Path Upstream support from 1 Apr 2027 Next forced move Moves needed by 30 Apr 2028
22 to 24 13 months (to 30 Apr 2028) Before 30 Apr 2028, to 26 or 27 2
22 to 26 25 months (to 30 Apr 2029) Before 30 Apr 2029, to 27 or 28 1

On Lambda, the gap between deprecation and the hard stop is fixed: 90 days from 30 April to the create block on 29 July, and 123 days to the update block on 31 August 2027. A team that misses 30 April therefore has about four months in which it can still ship code fixes to nodejs22.x functions without changing runtime. On Cloud Run functions the equivalent window, deprecation to decommission, is 184 days. Neither window includes upstream security fixes; it is only a deployment grace period.

If your estate mixes platforms, the binding constraint is usually Azure Linux Consumption. Moving those apps means a hosting plan migration plus a runtime upgrade, so start there.

Compliance, India and data protection

Section 8(5) of India's Digital Personal Data Protection Act 2023 requires data fiduciaries to take reasonable security safeguards to prevent personal data breaches. Running an unpatched runtime after a public fix exists is hard to defend under that standard, and the Node.js project itself warns that many industry audits forbid unmaintained runtimes. For the wider engineering controls, see our DPDP Act engineering playbook.

If you cannot finish by 30 April 2027, the Node.js project's end-of-life page names HeroDevs, NodeSource and TuxCare as commercial partners through the OpenJS Foundation's Ecosystem Sustainability Program, and says commercial support should be treated as temporary. In our reading it does not extend Lambda, Azure or Google runtime support.

Migration checklist

  1. Inventory every runtime. Lambda functions, Azure function apps, App Service apps, Cloud Run functions, Vercel projects, container base images, CI images, developer machines and build agents. Pin each to a major line, never a floating lts or latest tag.
  1. Pick the target per platform using the table above, and record the decision with its end-of-life date.
  1. Run the test suite on the target with deprecation output visible (--trace-deprecation) and fix new warnings before they become removals.
  1. Rebuild native addons and check prebuilt binaries for your target's NODE_MODULE_VERSION (137 for 24, 147 for 26).
  1. Check TLS material. Scan for keys under 2048-bit RSA or 224-bit ECC in clients, servers and fixtures.
  1. Update APM, loaders and mocking tools to versions certified for the target, especially anything that uses module.register() or AsyncLocalStorage.
  1. Roll out by blast radius: internal tools first, then low-traffic functions, then customer-facing services, with Lambda versions and aliases or Cloud Run traffic splitting for rollback.
  1. Remove 22 from CI after the last service moves.

Run these per function or app after tests pass.


            # AWS Lambda: list functions still on Node.js 22, then move one
aws lambda list-functions --query "Functions[?Runtime=='nodejs22.x'].FunctionName" --output text
aws lambda update-function-configuration --function-name my-fn --runtime nodejs24.x

# Google Cloud Run functions (add your existing trigger and region flags)
gcloud functions deploy my-fn --runtime nodejs24 --source .

# Azure Functions on Linux (Premium or Dedicated)
az functionapp config set --linux-fx-version "node|24" --name my-app --resource-group my-rg

# Azure Functions on Windows
az functionapp config appsettings set --settings WEBSITE_NODE_DEFAULT_VERSION=~24 --name my-app --resource-group my-rg

# Azure App Service on Linux
az webapp config set --resource-group my-rg --name my-app --linux-fx-version "NODE|24-lts"

# Azure App Service on Windows
az webapp config appsettings set --name my-app --resource-group my-rg --settings WEBSITE_NODE_DEFAULT_VERSION="~24"
          

On Vercel, set engines.node to 24.x or 26.x in package.json and redeploy, then confirm by logging process.version.

How eCorpIT can help

eCorpIT is a Gurugram-based technology organisation, founded in 2021, assessed at CMMI Level 5 and MSME certified, with senior-led engineering teams working across AWS, Microsoft and Google platforms. Our cloud computing services team can plan and run Node.js runtime upgrades across Lambda, Azure, Cloud Run, Vercel and container estates. Talk to us at /contact-us/.

Last updated: 2 November 2026.

References

  1. schedule.json — Node.js Release Working Group
  1. End-of-Life (EOL) — Node.js
  1. Lambda Event Function runtimes — AWS
  1. Supported languages in Azure Functions, last updated 22 October 2026 — Microsoft Learn
  1. Retirement: Support for Node 22 LTS ends on April 30, 2027, 24 August 2026 — Microsoft release communications
  1. Cloud Run functions runtime support schedule, last updated 26 October 2026 — Google Cloud
  1. Node.js release index (index.json) — Node.js
  1. CODENAMES.md — Node.js Release Working Group
  1. Release schedule and phases (README) — Node.js Release Working Group
  1. Node.js v20 to v22 — Node.js
  1. Introducing public preview runtimes on AWS Lambda, starting with Node.js 26 and Python 3.15 — AWS Compute Blog
  1. Migrate Consumption plan apps to the Flex Consumption plan — Microsoft Learn
  1. Azure Functions language stack support policy — Microsoft Learn
  1. Language runtime support policy for Azure App Service — Microsoft Learn
  1. Configure a Node.js app for Azure App Service — Microsoft Learn
  1. Node.js on App Service — Microsoft, app-service-linux-docs
  1. .NET 11, Python 3.15, and Node.js 26 on Azure App Service for Linux, 11 September 2026 — Azure App Service team blog
  1. Supported Node.js versions — Vercel
  1. Node.js 26 LTS is now Generally Available on Vercel, 29 October 2026 — Vercel
  1. Node.js 20 is being deprecated on October 1, 2026, 14 July 2026 — Vercel
  1. Evolving the Node.js release schedule, last updated 10 March 2026 — Node.js
  1. Node.js v22 to v24 — Node.js
  1. Node.js 24.0.0 (Current), 6 May 2025 — Node.js
  1. Node.js 26.0.0 (Current), 5 May 2026 — Node.js
  1. Node.js 26.13.0 (LTS), 28 October 2026 — Node.js
  1. The Digital Personal Data Protection Act, 2023 — Ministry of Electronics and Information Technology, Government of India
  1. Update language stack versions in Azure Functions — Microsoft Learn

Frequently asked

Quick answers.

01 When exactly does Node.js 22 reach end of life?
Node.js 22 reaches end of life on 30 April 2027, according to the Node.js Release Working Group's schedule.json. It has been in Maintenance LTS since 21 October 2025. After 30 April the project publishes no further 22.x releases, including security fixes, although existing installations keep running.
02 Will my Node.js 22 Lambda functions stop working on 30 April 2027?
No. Invocations continue after deprecation. AWS may stop patching nodejs22.x from 30 April 2027, blocks creating new functions on 29 July 2027 and blocks code and configuration updates on 31 August 2027. You can still switch a function to a supported runtime after those dates.
03 Should I upgrade from Node.js 22 to 24 or straight to 26?
Go to 26 where your platform offers it at general availability, because it is supported until 30 April 2029 against 30 April 2028 for 24. Choose 24 when 26 is unavailable, as on Azure Functions in November 2026, or when native addons and vendor SDKs have not certified 26.
04 Why can my Azure Linux Consumption app not move to Node.js 24?
Microsoft states that Node.js 22 is the last Node.js version supported on the Linux Consumption plan, and no newer versions will be added. You must first migrate the app to the Flex Consumption plan, then upgrade. The Linux Consumption hosting option itself retires on 30 September 2028.
05 What breaks most often when moving from Node.js 22 to 24?
In our judgement, the likeliest breaks are OpenSSL 3.5's security level, which rejects RSA keys under 2048 bits, ECC keys under 224 bits and RC4 ciphers, plus stricter fetch and stream behaviour, the removed tls.createSecurePair, runtime warnings for url.parse(), and native addons that need rebuilding for V8 13.6.
06 What extra changes come with Node.js 26?
Node.js 26 adds V8 14.6, Undici 8, Temporal enabled by default and a new addon ABI (NODE_MODULE_VERSION 147). It removes writeHeader(), the legacy stream modules and the experimental transform-types flag, and runtime-deprecates module.register(), which can affect some custom loaders, mocking libraries and APM tools.
07 When will Vercel remove Node.js 22?
Vercel had not published a Node.js 22 deprecation date as of 1 November 2026. For Node.js 20, it announced in July 2026 and disabled the version for new deployments on 1 October 2026, about five months after upstream end of life. Existing deployments continued to serve traffic.
08 Can I pay for security fixes after Node.js 22 end of life?
Yes. Through the OpenJS Foundation's Ecosystem Sustainability Program, the Node.js project names HeroDevs, NodeSource and TuxCare as commercial partners for end-of-life versions. Use this as a time-limited bridge. In our reading it does not restore managed runtime support on Lambda, Azure Functions or Cloud Run functions.

About the author

Manu Shukla

Founder & Director

Founder of eCorpIT. Hands-on engineer leading senior-only delivery for AI apps, custom software, and cloud systems for global clients.

Subscribe

One engineering note a week. No fluff, no spam.

Senior-architect playbooks on AI agents, mobile apps, cloud, security, data, and marketing — delivered every Wednesday.

Past the reading

Read enough. Let's build something.

A senior architect responds in 24 working hours with scope, indicative cost, and a timeline. NDA before any technical conversation.