RepoJournal

$ cat nodejs/month/2026-08-01.log

Node.js

Node.js

the month in review · August 2026

Node 26 line lands crypto, stream, and FFI hardening as deprecations tighten the core

August shipped two minor releases of Node 26 that carry performance, crypto, and stream changes while several runtime deprecations signal where the core is heading.

591 commits 519 PRs merged 12 releases 31 briefings covered

The headline is the shift toward stricter, more explicit core APIs. Node 26.6.0 and 26.7.0 brought a wave of changes, but the through-line is a deliberate tightening: HTTP now runtime-deprecates constructing without `new` [1], and `Server.prototype._listen2` follows the same path [2]. These mark the start of a transition, not an immediate break, so existing code keeps running but should start migrating before the next major. In the same spirit, streams now honor `AbortSignal` in `Writer.end()` [3], giving callers a way to cancel a pending write instead of leaving it dangling.

Performance landed across streams and the event loop. WHATWG tee and BYOB reads got a reduction in per-chunk work [4], and the commit queue received an efficiency fix after a patch . The FFI layer also hardened: fast calls are now rejected after a library close [5], which prevents a use-after-close crash, and a memory leak fix landed earlier in the month. The fixes came after the FFI crash was caught before it spread widely.

Crypto went through a notable period. Private keys can now be loaded through STORE loaders [6], which broadens the supported key loading paths. The TLS layer made an abort into a throw , turning an asynchronous, possibly silent failure into a synchronous, visible one. Root certificates updated to NSS 3.125 [7], and the crypto stack put BoringSSL front and center, which is a signal of the direction for future crypto work.

The dependency and tooling sync across the Node ecosystem was a constant thread. zlib landed ZIP archive support with ZipFile, ZipBuffer, and ZipEntry, plus a move to zlib 1.3.2.1-motley [8][9]. Undici shipped 8.10.0 fixing an interceptor failure where cache() and deduplicate() were silently inert without opts.origin [10] as well as allowing interceptors without that option [11]. Node core deps synced across the stack as part of that release . The Docker toolchain also tightened, with a jq requirement added and a fix to release key sync , and the compile cache turned read-only as part of a hardening effort.

The direction is clear: Node is spending August reducing silent failure modes and making performance tradeoffs explicit. The runtime deprecations in HTTP and net, the TLS abort becoming a throw, and the zlib/stream API additions all fit that pattern. If you maintain a library that constructs HTTP servers or calls `_listen2`, start planning for the deprecations now, because they will not get quieter.

References

  1. [1] http: runtime deprecate instantiating without new ↗ nodejs/node
  2. [2] net: runtime-deprecate Server.prototype._listen2 ↗ nodejs/node
  3. [3] stream: honor AbortSignal in Writer.end() ↗ nodejs/node
  4. [4] stream: reduce per-chunk work in WHATWG tee and BYOB reads ↗ nodejs/node
  5. [5] ffi: reject fast calls after library close ↗ nodejs/node
  6. [6] crypto: support loading private keys through STORE loaders ↗ nodejs/node
  7. [7] crypto: update root certificates to NSS 3.125 nodejs/node
  8. [8] zlib: add ZIP archive support to zlib (ZipFile,ZipBuffer,ZipEntry) ↗ nodejs/node
  9. [9] deps: update zlib to 1.3.2.1-motley-42c2f19 ↗ nodejs/node
  10. [10] fix(interceptors): cache() and deduplicate() silently inert on Client/Pool without opts.origin ↗ nodejs/undici
  11. [11] fix(interceptors): allow interceptors without opts.origin (#5628) ↗ nodejs/undici

$ ls nodejs/month/ # the briefings behind this review

Sat Aug 1 NODE CUTS STREAM OVERHEAD, DTLS GAINS STABILITY Sun Aug 2 UNDICI FIXES SILENT INTERCEPTOR FAILURE; NODE ADDS ZIP SUPPORT AND HTTP DEPRECATION Mon Aug 3 NODE CRYPTO UNLOCKS PRIVATE KEY LOADERS, FFI CRASH FIXED BEFORE IT SPREADS Tue Aug 4 NODE 26.6.0 AND 24.19.0 LTS LAND WITH FFI EVENT LOOP AND BUFFER STREAMING Wed Aug 5 STREAMS SHED ALLOCATIONS, HTTP/2 WINDOWS QUADRUPLE Thu Aug 6 NODE 26.7.0 SHIPS WITH CRYPTO UPGRADES AND DNS SECURITY FIX Fri Aug 7 NODE CORE LANDS PERFORMANCE WINS ACROSS NET, FS, AND STREAMS Sat Aug 8 DOCKER-NODE TIGHTENS CONTRIBUTOR TOOLCHAIN WITH JQ REQUIREMENT Sun Aug 9 NODE COMMITS QUEUE EFFICIENCY FIX, SQLITE AND TLS REFINEMENTS SHIP Mon Aug 10 NODE PATCHES COMMIT QUEUE, FIXES FFI MEMORY LEAK Tue Aug 11 UNDICI 8.10.0 SHIPS AS NODE CORE DEPS SYNC ACROSS THE STACK Wed Aug 12 NODE CORE TIGHTENS CRYPTO IN FIPS MODE, FIXES SQLITE STATEMENT LEAKS Thu Aug 13 NODE.JS DOCKER AUTOMATION TIGHTENS RELEASE KEY SYNC Fri Aug 14 NODE TEST RUNNER GAINS BOOLEAN FILTERS, CRYPTO SPEC COMPLIANCE TIGHTENS Sat Aug 15 UNDICI FIXES ABORT HANDLING BUGS THAT HANG REQUESTS Sun Aug 16 WEBSTREAMS PROMISE CHURN CRUSHED, SQLITE DIAGNOSTICS LAND Mon Aug 17 JS-YAML SECURITY FIX SHIPS IN NODEJS-DIST-INDEXER 1.8.24 Tue Aug 18 NODE FFI HARDENS AGAINST CONSTRUCTOR ABUSE Wed Aug 19 Node slams the brakes on module.register Thu Aug 20 READFILE 3-6x FASTER: NODE'S SMALL-FILE PATH COLLAPSES FOUR ROUND TRIPS INTO ONE Fri Aug 21 Undici kills idle-socket latency Sat Aug 22 NODE DROPS --USE-LARGEPAGES AND HARMONY IMPORT ATTRIBUTES Sun Aug 23 Node.js Crypto Overhaul Puts BoringSSL Front and Center Mon Aug 24 Node's compile cache turns read-only Tue Aug 25 Node's TLS abort becomes a throw Wed Aug 26 NODE CORE PERF: 10-20% EVENTTARGET SPEEDUP LANDS Thu Aug 27 NODE 26.8.1 HITS DOCKER IMAGES Fri Aug 28 COREPACK SHAKES UP PACKAGE MANAGER RESOLUTION Sat Aug 29 Weak listener retention fix, core-validate-commit drops tap and c8 Sun Aug 30 Web Crypto PKCS8 export now rejects public keys with InvalidAccessError Mon Aug 31 Node.js quic drops dead fin flag, zlib 1.3.2.1-motley lands