Node.js 19

19 released 18 October 2022, latest 19.9.0.

Node.js 19 reached end of life on 1 June 2023.

What changed

Node.js 19 was a short-lived, non-LTS line that advanced the runtime from the preceding generation with a newer V8 engine and related dependency updates. It made the Web Crypto API stable, so applications could rely on the built-in cryptographic web APIs without their prior experimental status. Its most consequential behavioral change was enabling HTTP/1.1 keep-alive by default for Node’s HTTP and HTTPS agents. Clients that previously opened a new connection per request could begin reusing sockets, improving connection efficiency but exposing assumptions around connection lifecycle, idle sockets, proxies, load balancers, and tests that expect immediate connection closure.

What staying costs

This cycle has reached end of life, so Node.js 19 no longer receives upstream security fixes, bug fixes, or compatibility maintenance. Remaining on it leaves runtime defects and vulnerabilities unpatched and increases the chance that package maintainers, CI images, operating-system builds, and native-module distributions no longer test against the deployed runtime. The HTTP keep-alive default also remains a migration and operational concern: an application that has not been tested with its actual proxies, upstream services, shutdown handling, and socket timeouts can show intermittent request failures, stale-connection errors, or changed resource usage. Because 19 was not an LTS line, moving from it should be treated as a direct migration to a currently supported LTS release rather than as a platform to retain or standardize on.

What to do

Plan a direct upgrade from Node.js 19 to a currently supported LTS release. First, inventory every deployed Node binary, container base image, CI runner, serverless runtime, and native dependency, including packages that compile through node-gyp or ship prebuilt binaries. Run the application and its full test suite on the target runtime, then exercise production-like traffic paths involving outbound HTTP or HTTPS calls, connection pools, proxies, load balancers, retries, timeouts, graceful shutdown, and long-lived sockets. Review dependency engine requirements and update packages that do not support the target runtime. Rebuild native modules in the target environment, update lockfiles and CI images as needed, and deploy through a staged rollout with runtime error, latency, socket, and connection-reset monitoring. Remove Node.js 19 from build and deployment configuration once the replacement is operating normally.

We can tell you what moving off Node.js 19 involves.

What it takes to move off Node.js 19 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