Node.js v24.12.0 (LTS)

Michaël Zasso

2025-12-10, Version 24.12.0 'Krypton' (LTS), @targos

Notable Changes

  • [1a00b5f68a] - (SEMVER-MINOR) http: add optimizeEmptyRequests server option (Rafael Gonzaga) #59778
  • [ff5754077d] - (SEMVER-MINOR) lib: add options to util.deprecate (Rafael Gonzaga) #59982
  • [8987159234] - (SEMVER-MINOR) module: mark type stripping as stable (Marco Ippolito) #60600
  • [92c484ebf4] - (SEMVER-MINOR) node-api: add napi_create_object_with_properties (Miguel Marcondes Filho) #59953
  • [b11bc5984e] - (SEMVER-MINOR) sqlite: allow setting defensive flag (Bart Louwers) #60217
  • [e7da5b4b7d] - (SEMVER-MINOR) src: add watch config namespace (Marco Ippolito) #60178
  • [a7f7d10c06] - (SEMVER-MINOR) src: add an option to make compile cache portable (Aditi) #58797
  • [92ea669240] - (SEMVER-MINOR) src,permission: add --allow-inspector ability (Rafael Gonzaga) #59711
  • [05d7509bd2] - (SEMVER-MINOR) v8: add cpu profile (theanarkh) #59807

Commits

  • [e4a23a35ac] - benchmark: focus on import.meta initialization in import-meta benchmark (Joyee Cheung) #60603
  • [b6114ae5c9] - benchmark: add per-suite setup option (Joyee Cheung) #60574
  • [ac8e90af7c] - buffer: speed up concat via TypedArray#set (Gürgün Dayıoğlu) #60399
  • [acbc8ca13e] - build: upgrade Python linter ruff, add rules ASYNC,PERF (Christian Clauss) #59984
  • [f97a609a07] - console: optimize single-string logging (Gürgün Dayıoğlu) #60422
  • [6cd9bdc580] - crypto: ensure documented RSA-PSS saltLength default is used (Filip Skokan) #60662
  • [0fafe24d9b] - crypto: fix argument validation in crypto.timingSafeEqual fast path (Joyee Cheung) #60538
  • [54421e0419] - debugger: fix event listener leak in the run command (Joyee Cheung) #60464
  • [c361a628b4] - deps: V8: cherry-pick 72b0e27bd936 (pthier) #60732
  • [c70f4588dd] - deps: V8: cherry-pick 6bb32bd2c194 (Erik Corry) #60732
  • [881fe784c5] - deps: V8: cherry-pick 0dd2318b5237 (Erik Corry) #60732
  • [457c33efcc] - deps: V8: cherry-pick df20105ccf36 (Erik Corry) #60732
  • [0bf45a829c] - deps: V8: backport e5dbbbadcbff (Darshan Sen) #60524
  • [4993bdc476] - deps: V8: cherry-pick 5ba9200cd046 (Juan José Arboleda) #60620
  • [1e9abe0078] - deps: update corepack to 0.34.5 (Node.js GitHub Bot) #60842
  • [3f704ed08f] - deps: update corepack to 0.34.4 (Node.js GitHub Bot) #60643
  • [04e360fdb1] - deps: V8: cherry-pick 06bf293610ef, 146962dda8d2 and e0fb10b5148c (Michaël Zasso) #60713
  • [fcbd8dbbde] - deps: patch V8 to 13.6.233.17 (Michaël Zasso) #60712
  • [28e9433f39] - deps: V8: cherry-pick 87356585659b (Joyee Cheung) #60069
  • [3cac85b243] - deps: V8: backport 2e4c5cf9b112 (Michaël Zasso) #60654
  • [1daece1970] - deps: call OPENSSL_free after ASN1_STRING_to_UTF8 (Rafael Gonzaga) #60609
  • [5f55a9c9ea] - deps: nghttp2: revert 7784fa979d0b (Antoine du Hamel) #59790
  • [1d9e7c1f4d] - deps: update nghttp2 to 1.67.1 (nodejs-github-bot) #59790
  • [3140415068] - deps: update simdjson to 4.1.0 (Node.js GitHub Bot) #60542
  • [d911f9f1b8] - deps: update amaro to 1.1.5 (Node.js GitHub Bot) #60541
  • [daaaf04a32] - deps: V8: cherry-pick 2abc61361dd4 (Richard Lau) #60177
  • [b4f63ee5f8] - doc: update Collaborators list to reflect hybrist handle change (Antoine du Hamel) #60650
  • [effcf7a8ab] - doc: fix link in --env-file=file section (N. Bighetti) #60563
  • [7011736703] - doc: fix linter issues (Antoine du Hamel) #60636
  • [5cc79d8945] - doc: add missing history entry for sqlite.md (Antoine du Hamel) #60607
  • [bbc649057c] - doc: correct values/references for buffer.kMaxLength (René) #60305
  • [ea7ecb517b] - doc: recommend events.once to manage 'close' event (Dan Fabulich) #60017
  • [58bff04cc2] - doc: highlight module loading difference between import and require (Ajay A) #59815
  • [bbcbff9b4d] - doc: add CJS code snippets in sqlite.md (Allon Murienik) #60395
  • [f8af33d5a7] - doc: fix typo in process.unref documentation (우혁) #59698
  • [df105dc351] - doc: add some entries to glossary.md (Mohataseem Khan) #59277
  • [4955cb2b5b] - doc: improve agent.createConnection docs for http and https agents (JaeHo Jang) #58205
  • [6283bb5cc9] - doc: fix pseudo code in modules.md (chirsz) #57677
  • [d5059ea537] - doc: add missing variable in code snippet (Koushil Mankali) #55478
  • [900de373ae] - doc: add missing word in single-executable-applications.md (Konstantin Tsabolov) #53864
  • [5735044c8b] - doc: fix typo in http.md (Michael Solomon) #59354
  • [2dee6df831] - doc: update devcontainer.json and add documentation (Joyee Cheung) #60472
  • [8f2d98d7d2] - doc: add haramj as triager (Haram Jeong) #60348
  • [bbd7fdfff4] - doc: clarify require(esm) description (dynst) #60520
  • [33ad11a764] - doc: instantiate resolver object (Donghoon Nam) #60476
  • [81a61274f3] - doc: correct module loading descriptions (Joyee Cheung) #60346
  • [77911185fe] - doc: clarify --use-system-ca support status (Joyee Cheung) #60340
  • [185f6e95d9] - doc,crypto: link keygen to supported types (Filip Skokan) #60585
  • [772d6c6608] - doc,src,lib: clarify experimental status of Web Storage support (Antoine du Hamel) #60708
  • [ad98e11ac2] - esm: use sync loading/resolving on non-loader-hook thread (Joyee Cheung) #60380
  • [1a00b5f68a] - (SEMVER-MINOR) http: add optimizeEmptyRequests server option (Rafael Gonzaga) #59778
  • [5703ce68bc] - http: replace startsWith with strict equality (btea) #59394
  • [2b696ffad8] - http2: add diagnostics channels for client stream request body (Darshan Sen) #60480
  • [dbdf4cb5a5] - inspector: inspect HTTP response body (Chengzhong Wu) #60572
  • [9dc9a7d33d] - inspector: support inspecting HTTP/2 request and response bodies (Darshan Sen) #60483
  • [89fa2befe4] - inspector: fix crash when receiving non json message (Shima Ryuhei) #60388
  • [ff5754077d] - (SEMVER-MINOR) lib: add options to util.deprecate (Rafael Gonzaga) #59982
  • [33baaf42c8] - lib: replace global SharedArrayBuffer constructor with bound method (Renegade334) #60497
  • [b047586a08] - meta: bump actions/download-artifact from 5.0.0 to 6.0.0 (dependabot[bot]) #60532
  • [64192176d7] - meta: bump actions/upload-artifact from 4.6.2 to 5.0.0 (dependabot[bot]) #60531
  • [af6d4a6b9b] - meta: bump github/codeql-action from 3.30.5 to 4.31.2 (dependabot[bot]) #60533
  • [c17276fd24] - meta: bump actions/setup-node from 5.0.0 to 6.0.0 (dependabot[bot]) #60529
  • [6e8b52a7dc] - meta: bump actions/stale from 10.0.0 to 10.1.0 (dependabot[bot]) #60528
  • [a12658595b] - meta: call create-release-post.yml post release (Aviv Keller) #60366
  • [8987159234] - (SEMVER-MINOR) module: mark type stripping as stable (Marco Ippolito) #60600
  • [36da413663] - module: fix directory option in the enableCompileCache() API (Joyee Cheung) #59931
  • [92c484ebf4] - (SEMVER-MINOR) node-api: add napi_create_object_with_properties (Miguel Marcondes Filho) #59953
  • [545162b0d4] - node-api: use local files for instanceof test (Vladimir Morozov) #60190
  • [526c011d89] - perf_hooks: fix stack overflow error (Antoine du Hamel) #60084
  • [1de0476939] - perf_hooks: move non-standard performance properties to perf_hooks (Chengzhong Wu) #60370
  • [07ec1239ef] - repl: fix pasting after moving the cursor to the left (Ruben Bridgewater) #60470
  • [b11bc5984e] - (SEMVER-MINOR) sqlite: allow setting defensive flag (Bart Louwers) #60217
  • [273c9661fd] - sqlite,doc: fix StatementSync section (Edy Silva) #60474
  • [d92ec21a4c] - src: use CP_UTF8 for wide file names on win32 (Fedor Indutny) #60575
  • [baef0468ed] - src: move Node-API version detection to where it is used (Anna Henningsen) #60512
  • [e7da5b4b7d] - (SEMVER-MINOR) src: add watch config namespace (Marco Ippolito) #60178
  • [a7f7d10c06] - (SEMVER-MINOR) src: add an option to make compile cache portable (Aditi) #58797
  • [566add0b19] - src: avoid C strings in more C++ exception throws (Anna Henningsen) #60592
  • [9b796347c1] - src: add internal binding for constructing SharedArrayBuffers (Renegade334) #60497
  • [3b01cbb411] - src: move napi_addon_register_func to node_api_types.h (Anna Henningsen) #60512
  • [02fb7f4ecb] - src: remove unconditional NAPI_EXPERIMENTAL in node.h (Chengzhong Wu) #60345
  • [bd09ae24e4] - src: clean up generic counter implementation (Anna Henningsen) #60447
  • [cd6bf51dbd] - src: add enum handle for ToStringHelper + formatting (Burkov Egor) #56829
  • [92ea669240] - (SEMVER-MINOR) src,permission: add --allow-inspector ability (Rafael Gonzaga) #59711
  • [ac3dbe48f7] - stream: don't try to read more if reading (Robert Nagy) #60454
  • [790288a93b] - test: ensure assertions are reachable in test/internet (Antoine du Hamel) #60513
  • [0a85132989] - test: fix status when compiled without inspector (Antoine du Hamel) #60289
  • [2f57673172] - test: deflake test-perf-hooks-timerify-histogram-sync (Joyee Cheung) #60639
  • [09726269de] - test: apply a delay to watch-mode-kill-signal tests (Joyee Cheung) #60610
  • [45537b9562] - test: async iife in repl (Tony Gorez) #44878
  • [4ca81f101d] - test: parallelize sea tests when there's enough disk space (Joyee Cheung) #60604
  • [ea71e96191] - test: only show overridden env in child process failures (Joyee Cheung) #60556
  • [06b2e348c7] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60498
  • [de9c8cb670] - test: ensure assertions are reachable in test/es-module (Antoine du Hamel) #60501
  • [75bc40fced] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60485
  • [1a6084cfd3] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60500
  • [2c651c90cf] - test: split test-perf-hooks-timerify (Joyee Cheung) #60568
  • [6e8b5f7345] - test: add more logs to test-esm-loader-hooks-inspect-wait (Joyee Cheung) #60466
  • [9dea7ffa30] - test: mark stringbytes-external-exceed-max tests as flaky on AIX (Joyee Cheung) #60565
  • [0b3c3b710a] - test: split test-esm-wasm.js (Joyee Cheung) #60491
  • [a15b795b34] - test: correct conditional secure heap flags test (Shelley Vohr) #60385
  • [38b77b3a44] - test: fix flaky test-watch-mode-kill-signal-* (Joyee Cheung) #60443
  • [e8d7598057] - test: capture stack trace in debugger timeout errors (Joyee Cheung) #60457
  • [674befeb81] - test: ensure assertions are reachable in test/sequential (Antoine du Hamel) #60412
  • [952c08a735] - test: ensure assertions are reachable in more folders (Antoine du Hamel) #60411
  • [bbca57584b] - test: split test-runner-watch-mode (Joyee Cheung) #60391
  • [e78e0cf6e7] - test: move test-runner-watch-mode helper into common (Joyee Cheung) #60391
  • [84576ef021] - test: ensure assertions are reachable in test/addons (Antoine du Hamel) #60142
  • [1659078c11] - test: ignore EPIPE errors in https proxy invalid URL test (Joyee Cheung) #60269
  • [79ffee80ec] - test: ensure assertions are reachable in test/client-proxy (Antoine du Hamel) #60175
  • [e5a812243a] - test: ensure assertions are reachable in test/async-hooks (Antoine du Hamel) #60150
  • [e924fd72e3] - test,crypto: handle a few more BoringSSL tests (Shelley Vohr) #59030
  • [a55ac11611] - test,crypto: update x448 and ed448 expectation when on boringssl (Shelley Vohr) #60387
  • [55d5e9ec73] - tls: fix leak on invalid protocol method (Shelley Vohr) #60427
  • [5763c96e7c] - tools: replace invalid expression in dependabot config (Riddhi) #60649
  • [b6e21b47d7] - tools: skip unaffected GHA jobs for changes in test/internet (Antoine du Hamel) #60517
  • [999664c76d] - tools: do not use short hashes for deps versioning to avoid collision (Antoine du Hamel) #60407
  • [ada856d0fb] - tools: only add test reporter args when node:test is used (Joyee Cheung) #60551
  • [1812c56bb3] - tools: fix update-icu script (Michaël Zasso) #60521
  • [747040438a] - tools: fix linter for semver-major release proposals (Antoine du Hamel) #60481
  • [f170551e40] - tools: fix failing release-proposal linter for LTS transitions (Antoine du Hamel) #60465
  • [2db4ea0ce4] - tools: remove undici from daily wpt.fyi job (Filip Skokan) #60444
  • [2a85aa4e7b] - tools: add lint rule to ensure assertions are reached (Antoine du Hamel) #60125
  • [48299ef5fb] - tools,doc: update JavaScript primitive types to match MDN Web Docs (JustApple) #60581
  • [7ec04cf936] - util: fix stylize of special properties in inspect (Ge Gao) #60479
  • [05d7509bd2] - (SEMVER-MINOR) v8: add cpu profile (theanarkh) #59807
  • [884fe884a1] - vm: hint module identifier in instantiate errors (Chengzhong Wu) #60199
  • [a2caf19f70] - watch: fix interaction with multiple env files (Marco Ippolito) #60605

Windows 64-bit Installer: https://nodejs.org/dist/v24.12.0/node-v24.12.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.12.0/node-v24.12.0-arm64.msi
Windows 64-bit Binary: https://nodejs.org/dist/v24.12.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.12.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v24.12.0/node-v24.12.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.12.0/node-v24.12.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.12.0/node-v24.12.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v24.12.0/node-v24.12.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.12.0/node-v24.12.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.12.0/node-v24.12.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v24.12.0/node-v24.12.0-aix-ppc64.tar.gz
ARMv8 64-bit Binary: https://nodejs.org/dist/v24.12.0/node-v24.12.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v24.12.0/node-v24.12.0.tar.gz
Other release files: https://nodejs.org/dist/v24.12.0/
Documentation: https://nodejs.org/docs/v24.12.0/api/

SHASUMS

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

31f3d065bb84f069e522e55d0d3035bd364cba5d8a22233ff68005d281e8bb78  node-v24.12.0-aix-ppc64.tar.gz
24b03834da0c49f8cf1f22dea7da8ccb65dc705c37a10c0622bfd839c904d6f2  node-v24.12.0-arm64.msi
319f221adc5e44ff0ed57e8a441b2284f02b8dc6fc87b8eb92a6a93643fd8080  node-v24.12.0-darwin-arm64.tar.gz
4db2a7842267d4d99e35284289b241c43465b08a28ece4fcb6a9460ce7e4c68c  node-v24.12.0-darwin-arm64.tar.xz
b82ea4c62fd08e250cab59d625e75d77cc5b0a3d60c6698ebee4545c88a169c5  node-v24.12.0-darwin-x64.tar.gz
1e4d54f706e0a3613d6415ffe2ccdfd4095d3483971dbbaa4ff909fac5fc211c  node-v24.12.0-darwin-x64.tar.xz
af120bedced0f62cf6506503347e165032b50274383e0dcc6d216c8d32260172  node-v24.12.0-headers.tar.gz
a432e8935507a98ec0fc4c93b48199e83b4bec5b8db7e0caedf058be0c5631bf  node-v24.12.0-headers.tar.xz
9b2a2eeb98a8eb37361224e2a1d060300ad2dd143af58dfdb16de785df0f1228  node-v24.12.0-linux-arm64.tar.gz
a06d42807fb500f7459e5f3fa6cb431447352826ee6f07e14adfeec58a1b3210  node-v24.12.0-linux-arm64.tar.xz
66ec79b4d64f4109aedf822108715d0b6097118df9159c2f6321477da4ea17aa  node-v24.12.0-linux-ppc64le.tar.gz
3a18221623530a35c35611786b33cedef8b84b5d4c683b01ba6341b15043bf97  node-v24.12.0-linux-ppc64le.tar.xz
8dc960a2555db1aa77fd131c25be571b9f7844bc8b278e78732b9f580fe7d580  node-v24.12.0-linux-s390x.tar.gz
b9038c2c6b51970cd09cc2bee81dd7e0fb7130823d940cec498c4686b204e4ed  node-v24.12.0-linux-s390x.tar.xz
6159227e0af7d7c3c6bb2fa900452b04a6cb8841a702a79acc613209d70b04d0  node-v24.12.0-linux-x64.tar.gz
bdebee276e58d0ef5448f3d5ac12c67daa963dd5e0a9bb621a53d1cefbc852fd  node-v24.12.0-linux-x64.tar.xz
b1659be3795c70073d72f5c3fb5834f080fec445a72e2f30a7796f65d6ba686c  node-v24.12.0.pkg
ad24a1f29e55c9539228f2c51a032da279188b681c4dc019cced7f82a0fcdd8d  node-v24.12.0.tar.gz
6d3e891a016b90f6c6a19ea5cbc9c90c57eef9198670ba93f04fa82af02574ae  node-v24.12.0.tar.xz
52f6d601c145f886434ed42533626571b388d3ad8d98dad16c310bc09a7ed86e  node-v24.12.0-win-arm64.7z
b05e7e066f813d35ad3cd9c24eedaee074c012ac7e00071297608fdd2e948ae3  node-v24.12.0-win-arm64.zip
8d41356abf5cb62404f311f131b7937f45aaeda5c15d060dc281c2ece817cdce  node-v24.12.0-win-x64.7z
9c125f61ae947b52e779095830f9cac267846a043ef7192183c84016aaad2812  node-v24.12.0-win-x64.zip
e3a50a907b6c71d9f3cb7571980cf3070ec0fadc6fb2a55516d5ff95083990f3  node-v24.12.0-x64.msi
986eb1e1d19222f7df4798df657bcc114c41c0d11b8344f03a1bf55a20772efc  win-arm64/node.exe
afef88b389be8ac30974d2cf69de26001f95f1e9efe1811f2e8467c4cdfe05d0  win-arm64/node.lib
74b1851395227ee43a7eb08cc98928234a835c23e9652508637e9cba9ada2b1e  win-arm64/node_pdb.7z
3de5ee60cc482a316aae5ee19ecc9cb78b382b3b1b6b5ab794e0b8b7f905aa67  win-arm64/node_pdb.zip
2ffe3acc0458fdde999f50d11809bbe7c9b7ef204dcf17094e325d26ace101d8  win-x64/node.exe
be205f2934c17fbd56ce6cdfcfbeb2f6a85061d5141e7a58eba240a8477a12fd  win-x64/node.lib
f39ab85c97d4df4822e5b38000120daffbf3ffcb35f291d1472a96eac1f3e70b  win-x64/node_pdb.7z
44e003eba00abbcc93554169979aa466dc78e70bdb6c1bde8552a2b5ca463853  win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQSGyNdGQuZ4RvjhIChNqoDR5ze8nwUCaTmjiQAKCRBNqoDR5ze8
n7BQAQCogq7g1amRbEYtWTeHg4aRCiOch9E1VAc2+xK0AP9SUwEA7ZNu7wtzdEF8
pIek2NZttJimx5IYGNVUVGxoZr7cug8=
=FCYb
-----END PGP SIGNATURE-----
Last Updated
Dec 10, 2025
Reading Time
8 min
Contribute
Edit this page
Table of Contents
  1. 2025-12-10, Version 24.12.0 'Krypton' (LTS), @targos
  2. Notable Changes
  3. Commits
  4. SHASUMS