$ cat nodejs/month/2026-09-01.log
the month in review · September 2026
Node 26.10.0 lands crypto.parsePKCS12 as npm 12 ships
By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology
Two Current releases in September brought a generic MAC API and PKCS#12 parsing, while the permission model gained an environment gate.
2026-09-22, Version 26.10.0 (Current), @aduh95 nodejs/node
The month's second Current release adds crypto.parsePKCS12(), giving you PKCS#12 parsing through node:crypto instead of an external library. It follows 26.9.0, which shipped a generic MAC API.
fix: avoid unbounded recursion in Set-Cookie attribute parser nodejs/undici
The Set-Cookie attribute parser recursed once per attribute with no depth bound, so a single header of the form a=b;;;;... overflowed the stack and threw an uncaught RangeError out of getSetCookies. The algorithm is now iterative; a response header is attacker-controlled input in most proxies and gateways.
fix(eventsource): validate Last-Event-ID on reconnect nodejs/undici
EventSource reconnects now UTF-8 encode the last event ID before adding it to the request header list and omit IDs that cannot be transported as header values, which stops repeated local reconnect failures while keeping valid Unicode IDs. Tracked as GHSA-q9qx-47rg-rhc7, it is a header-injection fix.
fs: watch directories, not files, in recursive fs.watch fallback nodejs/node
On Linux, where fs.watch() has no native recursive mode, the JavaScript fallback armed one watcher and one stat() per file and re-read the whole parent directory on every event. It now arms one watcher per directory and answers each event with a single stat(); the notes cite this repository's test/ tree at 13,500 entries and 896 directories.
v8: add setHeapProfileNearHeapLimit nodejs/node
v8.setHeapProfileNearHeapLimit(limit) writes a sampling heap profile to disk as V8 approaches the heap limit, for the cases where a full heap snapshot is too heavy. Pair it with the existing snapshot API when you need allocation attribution from a production OOM.
diagnostics_channel: lazily create tracing context nodejs/node
The tracing channel context is now created lazily, so code that only checks whether a channel is subscribed no longer pays for building one. If your HTTP router calls hasSubscribers before publishing, this is the path that got cheaper.
permission: support URL and Uint8Array as has()/drop() reference nodejs/node
process.permission.has() and drop() accept a WHATWG URL (resolved through fileURLToPath() for fs.* scopes) and a plain Uint8Array alongside strings and Buffers. Permission checks written against URL objects no longer need manual conversion first.
v8.11.0 nodejs/undici
by github-actions[bot]
Alongside: undici 8.11.0 with HTTP/2 length checks and WebSocket fixes, vfs rename over a non-empty directory, WPT streams tests updated to 4832db4761, SOCKS5 connectTimeout honored through ProxyAgent, and resource timing attributes like finalResponseHeadersStart added.
$ ls nodejs/month/ # the briefings behind this review
Keep up with Node.js in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.
Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.