Node.js

Current release: 26.7.0, released 5 August 2026.

What it is

Node.js is an open-source JavaScript runtime used primarily to run JavaScript outside the browser, especially for servers, command-line tools, build systems, automation, and backend services. It uses the V8 JavaScript engine and an event-driven, non-blocking I/O model. This model can handle many concurrent network or file operations efficiently when application code avoids blocking the event loop. Node.js has a large package ecosystem, centered on npm, and is commonly used for web APIs, real-time applications, server-rendered web applications, developer tooling, and lightweight services. Although JavaScript execution is generally organized around a main event-loop thread, Node.js can use worker threads, child processes, and native facilities for workloads that need parallelism or isolation.

History

Node.js emerged when server-side JavaScript was gaining interest as a way to use one language across browser and server development. Its early design combined V8 with an asynchronous I/O library, emphasizing callbacks and event-driven programming rather than a thread-per-request model. It quickly attracted users because it was well suited to network services and because npm made it easy to publish and consume small packages. Early ecosystem growth also brought concerns about dependency depth, package quality, and security. A community-led fork briefly created uncertainty around project governance, but the projects later converged under a more open governance model. Over time, Node.js added more standardized web-platform APIs, improved diagnostics and security capabilities, support for promises and async/await, worker threads, ES modules, and a built-in test runner. Its release and maintenance practices evolved toward predictable supported release lines, making it a long-lived platform for production services and development tooling.

Migration notes

Migration to Node.js is often less about translating syntax than adapting to its runtime and operational model. Applications coming from synchronous or thread-oriented server platforms may need redesign around asynchronous I/O, explicit concurrency control, cancellation, timeouts, backpressure, and event-loop responsiveness. CPU-intensive work can block all requests handled by an event loop unless it is moved to worker threads, separate processes, queues, or another compute service. Error handling also changes: failures may occur asynchronously, promise rejections need consistent handling, and callback-era code may have incompatible conventions. Moving older Node.js applications forward can expose differences between CommonJS and ES module loading, package export rules, dependency resolution, native add-on build requirements, stricter runtime behavior, and changes in default cryptography or TLS support. Dependency management is a major migration concern because lockfiles, package-manager behavior, transitive dependencies, registry policy, and abandoned packages can affect reproducibility. Native modules and packages that download platform-specific binaries require particular attention across operating systems, processor architectures, container images, and deployment environments. Teams should inventory runtime APIs, module formats, framework and package compatibility, environment-variable assumptions, startup scripts, build tooling, test behavior, observability integrations, and production process management. Migration away from Node.js commonly requires replacing npm-based build and dependency workflows, reworking asynchronous application boundaries, and accounting for JavaScript-specific serialization, numeric, date, and Unicode behavior in externally visible APIs. Incremental extraction behind stable HTTP, messaging, or command interfaces is often safer than a full rewrite.

Release history

26.x

24.x

22.x

Version support status

Node.js version support status by cycle
CycleStatusDate
Node.js 26SupportedSupport ends 27 October 2027
Node.js 25End of lifeEOL 1 June 2026
Node.js 24SupportedSupport ends 20 October 2026
Node.js 23End of lifeEOL 1 June 2025
Node.js 22SupportedSupport ends 21 October 2025
Node.js 21End of lifeEOL 1 June 2024
Node.js 20End of lifeEOL 30 April 2026
Node.js 19End of lifeEOL 1 June 2023
Node.js 18End of lifeEOL 30 April 2025
Node.js 17End of lifeEOL 1 June 2022
Node.js 16End of lifeEOL 11 September 2023
Node.js 15End of lifeEOL 1 June 2021
Node.js 14End of lifeEOL 30 April 2023
Node.js 13End of lifeEOL 1 June 2020
Node.js 12End of lifeEOL 30 April 2022
Node.js 11End of lifeEOL 30 June 2019
Node.js 10End of lifeEOL 30 April 2021
Node.js 9End of lifeEOL 30 June 2018
Node.js 8End of lifeEOL 31 December 2019
Node.js 7End of lifeEOL 30 June 2017