Build1 publisher2 min readPublished
Node 26.8.2 bumps OpenSSL, undici and npm inside the runtime
Upgrading a Node 26 binary also upgrades the TLS library, the bundled HTTP client and the package manager. The 26.8.2 changelog names OpenSSL 3.5.8, undici 8.10.2 and npm 11.19.1 among its dependency commits.
The Engineer · Build desk

What happened
- Node.js published 26.8.2 on the Current release line, with the release notes credited to Antoine du Hamel.
- The dependency commits move OpenSSL to 3.5.8 under PR #65542, undici to 8.10.2 under #65788 and npm to 11.19.1 under #65573.
- A meta commit from James M Snell, PR #65438, refines the security vulnerability posture for Node's experimental features.
- Build work covers riscv64 default flags and a skipped dockit step, deriving NODE_ARCH from target_cpu in the GN build, and removing the LTO parallelisation limit on Windows.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint Node 26's crypto and HTTP surfaces cannot be patched from an application lockfile. The fix ships as a runtime release, on the release team's schedule, and you take the whole binary or none of it.
- decision Images that install a specific npm on top of the runtime will now carry two npm versions, and someone has to decide which one the build actually uses.
- exposure Teams running experimental Node APIs in production have a policy change to read before assuming a bug in those features gets handled as a security release.
- precedent Writing the deprecation into the docs first gives the project the citation it needs to argue for a runtime warning, and later a removal, without breaking anyone in this release.
The OpenSSL upgrade took two commits under one pull request, #65542: `deps: upgrade openssl sources to openssl-3.5.8` and `deps: update archs files for openssl-3.5.8` [4]. Node carries the library in its own tree, so both halves land together. The release notes list the upgrade and do not say what changed inside 3.5.8 [24].
npm went to 11.19.1 under #65573 and corepack to 0.36.0 under #65653 [5][6]. The smaller vendored dependencies moved as well: simdjson to 4.6.9, perfetto to 58.2, zlib to a motley snapshot, googletest to a commit hash [16].
The deprecation is filed under doc. Commit 616bd3fa26 deprecates `Server.prototype._listen2` in `node:net`, from PR #65593 by Antoine du Hamel [7]. The underscore already said the method was internal; the doc entry says it out loud. Code that reaches for `_listen2` is code that subclasses or monkeypatches `net.Server`, and nothing else in this changelog touches the method [25]. The commit is listed twice, once in the opening group and again among the doc changes [8].
Node's own CI pins moved too. Eight dependabot commits landed in this release [14], four of them the codeql-action sub-actions stepping from 4.37.3 to 4.37.9 [13]. Only one crosses a major version: actions/setup-node from 6.4.0 to 7.0.0 [15]. step-security/harden-runner went from 2.20.0 to 2.21.0 [13].
Three documentation changes are the ones a reviewer would cite. `crypto.setEngine` now carries a stability status, from PR #65746 [17]. The outdated TLS authorized warning is gone, removed by Tim Perry in #65597 [18]. And #64342 discourages AbortSignal cleanup for long-lived resources [19]. The return type of `fs.mkdtemp*` was clarified in #65743 [20].
Four test fixes landed under a single PR, #65780: a widened gap in the resolver maxTimeout comparison, a repaired thread-spawn handshake in the WASI threads fixture, restarts counted only after the write in the watch emit-restarted test, and ignored tunnel resets in the proxy invalid-char-in-url test [22].
What to watch
- A runtime deprecation warning or a removal of _listen2 in a later 26.x release would turn this doc note into a code change.
- The first vulnerability report triaged under the refined experimental-features posture in #65438 will show what the policy actually does.
- Published advisory detail for OpenSSL 3.5.8 would decide whether 26.8.2 is a routine upgrade or an urgent one.