# Node.js v24.20.0 — 2026-08-26, Version 24.20.0 'Krypton' (LTS), @aduh95 - Product: Node.js (https://whatsnew.fyi/product/node-js) - Vendor: OpenJS Foundation - Date: 2026-08-26 - Version: v24.20.0 - Original notes: https://github.com/nodejs/node/releases/tag/v24.20.0 - Permalink: https://whatsnew.fyi/product/node-js/releases/v24.20.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add `using` scopes to `AsyncLocalStorage` - **added** — Add `end` parameter to buffer methods - **changed** — Update root certificates to NSS 3.125 - **added** — Add `permission.drop` to lib and permission - **added** — Implement package maps in loader - **added** — Add `--permission-audit` flag - **added** — Add `node:stream/iter` implementation - **added** — Add `context.log()` and test:log event to test runner - **added** — Report `entryFile` in `TestStream` events - **added** — Enable JSPI for WebAssembly - **fixed** — Fix TypeError on Maps with null keys in assert and util - **fixed** — Fix end parameter bugs in indexOf and lastIndexOf - **fixed** — Fix Blob.stream() leaking source buffer - **fixed** — Normalize lone carriage return in Blob native line endings - **fixed** — Validate copyArrayBuffer offsets against buffer length - **changed** — Use Clamp conversion in Blob slice ###### Notable Changes * \[[`b12bcc9ae1`](https://github.com/nodejs/node/commit/b12bcc9ae1)] - **(SEMVER-MINOR)** **async\_hooks**: add `using` scopes to `AsyncLocalStorage` (Stephen Belanger) [#61674](https://github.com/nodejs/node/pull/61674) * \[[`e2eb88b36b`](https://github.com/nodejs/node/commit/e2eb88b36b)] - **(SEMVER-MINOR)** **buffer**: add `end` parameter (Robert Nagy) [#62390](https://github.com/nodejs/node/pull/62390) * \[[`1fefdda18e`](https://github.com/nodejs/node/commit/1fefdda18e)] - **crypto**: update root certificates to NSS 3.125 (Node.js GitHub Bot) [#64746](https://github.com/nodejs/node/pull/64746) * \[[`4a158cf1ab`](https://github.com/nodejs/node/commit/4a158cf1ab)] - **doc**: add MikeMcC399 as collaborator (Mike McCready) [#64656](https://github.com/nodejs/node/pull/64656) * \[[`d4cafce076`](https://github.com/nodejs/node/commit/d4cafce076)] - **(SEMVER-MINOR)** **lib,permission**: add `permission.drop` (Rafael Gonzaga) [#62672](https://github.com/nodejs/node/pull/62672) * \[[`b3cfb55267`](https://github.com/nodejs/node/commit/b3cfb55267)] - **(SEMVER-MINOR)** **loader**: implement package maps (Maël Nison) [#62239](https://github.com/nodejs/node/pull/62239) * \[[`cd1eb3e60b`](https://github.com/nodejs/node/commit/cd1eb3e60b)] - **(SEMVER-MINOR)** **src,permission**: add `--permission-audit` (RafaelGSS) [#61869](https://github.com/nodejs/node/pull/61869) * \[[`28dc85d8d2`](https://github.com/nodejs/node/commit/28dc85d8d2)] - **(SEMVER-MINOR)** **stream**: add `node:stream/iter` implementation (James M Snell) [#62066](https://github.com/nodejs/node/pull/62066) * \[[`d31c168740`](https://github.com/nodejs/node/commit/d31c168740)] - **(SEMVER-MINOR)** **test\_runner**: add `context.log()` and test:log event (Moshe Atlow) [#64389](https://github.com/nodejs/node/pull/64389) * \[[`add1edbc42`](https://github.com/nodejs/node/commit/add1edbc42)] - **(SEMVER-MINOR)** **test\_runner**: report `entryFile` in `TestStream` events (Moshe Atlow) [#64309](https://github.com/nodejs/node/pull/64309) * \[[`d937c8c6cd`](https://github.com/nodejs/node/commit/d937c8c6cd)] - **(SEMVER-MINOR)** **wasm**: enable JSPI (Guy Bedford) [#59941](https://github.com/nodejs/node/pull/59941) ###### Commits * \[[`1822c0f335`](https://github.com/nodejs/node/commit/1822c0f335)] - **assert,util**: fix TypeError on Maps with null keys (Paul Bouchon) [#64441](https://github.com/nodejs/node/pull/64441) * \[[`b12bcc9ae1`](https://github.com/nodejs/node/commit/b12bcc9ae1)] - **(SEMVER-MINOR)** **async\_hooks**: add using scopes to AsyncLocalStorage (Stephen Belanger) [#61674](https://github.com/nodejs/node/pull/61674) * \[[`984260bf44`](https://github.com/nodejs/node/commit/984260bf44)] - **async\_hooks**: use validateBoolean for trackPromises (Soul Lee) [#64731](https://github.com/nodejs/node/pull/64731) * \[[`ba2612cca2`](https://github.com/nodejs/node/commit/ba2612cca2)] - **benchmark**: fix calibrate-n option handling (Luan Muniz) [#64146](https://github.com/nodejs/node/pull/64146) * \[[`236dc4d2d7`](https://github.com/nodejs/node/commit/236dc4d2d7)] - **benchmark**: add bytes variant to webstreams async-iterator (Matteo Collina) [#64291](https://github.com/nodejs/node/pull/64291) * \[[`b022a1419c`](https://github.com/nodejs/node/commit/b022a1419c)] - **benchmark**: respect stream/iter broadcast backpressure (Trivikram Kamat) [#63314](https://github.com/nodejs/node/pull/63314) * \[[`a290f51f15`](https://github.com/nodejs/node/commit/a290f51f15)] - **(SEMVER-MINOR)** **benchmark**: add benchmarks for experimental stream/iter (James M Snell) [#62066](https://github.com/nodejs/node/pull/62066) * \[[`465f2bfb74`](https://github.com/nodejs/node/commit/465f2bfb74)] - **buffer**: use Clamp conversion in Blob slice (Donghoon Kang) [#64739](https://github.com/nodejs/node/pull/64739) * \[[`74a22cd0c5`](https://github.com/nodejs/node/commit/74a22cd0c5)] - **buffer**: validate copyArrayBuffer offsets against buffer length (Ilia Alshanetsky) [#63904]( _[Truncated at 4000 characters — full notes: https://github.com/nodejs/node/releases/tag/v24.20.0]_