25 released 15 October 2025, latest 25.9.0.
Node.js 25 reached end of life on 1 June 2026.
What changed
Node.js 25 is an odd-numbered, non-LTS release line that moved the runtime forward from the preceding Node.js generation rather than serving as a long-term deployment target. It updates the embedded JavaScript engine and bundled npm, so JavaScript performance, language support, package-manager behavior, and native-addon compatibility can differ from earlier lines. It also carries forward Node.js’s continuing work on built-in TypeScript handling, ESM/CommonJS interoperability, web-platform APIs, permissions, and built-in modules. Teams should treat an upgrade to or from this line as a runtime migration: dependencies that use native binaries, module loaders, experimental flags, or assumptions about npm behavior need validation rather than a version-number-only change.
What staying costs
Node.js 25 has reached end of life. The Node.js project no longer provides maintenance releases for this line, including fixes for newly discovered security vulnerabilities, runtime defects, regressions, or compatibility issues. Continuing to run it leaves applications dependent on an unmaintained JavaScript engine and bundled tooling, and the exposure grows as operating-system images, CI environments, registries, and third-party packages move their tested support ranges to maintained Node.js lines. This is especially risky for internet-facing services, build agents, developer workstations, and workloads that install dependencies during deployment. An unsupported line can also make incident response harder because a reproducible runtime issue may have no upstream fix to consume.
What to do
Plan a direct move from Node.js 25 to a currently supported LTS line, selecting the target line required by your organization and dependency ecosystem. First inventory every service, CLI tool, CI job, container image, serverless runtime, and developer setup that declares or implicitly uses Node.js 25. Test the application and its full dependency installation process on the target runtime, with particular attention to native addons, lockfile and npm behavior, ESM and CommonJS loading, TypeScript execution, test runners, permissions, TLS or crypto integrations, and platform-specific build scripts. Update version declarations in package metadata, CI configuration, container base images, deployment manifests, and local-tool version managers together so environments do not drift. Roll out through staging, monitor startup failures, dependency-install failures, memory use, latency, and error rates, then remove Node.js 25 from supported build and deployment paths once production has moved.
We can tell you what moving off Node.js 25 involves.
What it takes to move off Node.js 25 depends on what you built on it — the version you are on, how much depends on it, and how much of the work is mechanical. Leave your email with this version and we can tell you what that looks like for you.
Not sure yet? Get my plan
