Skip to content

Node.js 24.14.0 (LTS)

Ruy Adorno

2026-02-24, Version 24.14.0 'Krypton' (LTS), @ruyadorno prepared by @aduh95

Notable Changes

  • [8b6d31d379] - (SEMVER-MINOR) async_hooks: add trackPromises option to createHook() (Joyee Cheung) #61415
  • [68da144b4e] - build,deps: replace cjs-module-lexer with merve (Yagiz Nizipli) #61456
  • [f3a24c76e4] - (SEMVER-MINOR) deps: add LIEF as a dependency (Joyee Cheung) #61167
  • [1948861d23] - (SEMVER-MINOR) events: repurpose events.listenerCount() to accept EventTargets (René) #60214
  • [d6f7c8d06f] - (SEMVER-MINOR) fs: add ignore option to fs.watch (Matteo Collina) #61433
  • [cb54b3ca6e] - (SEMVER-MINOR) http: add http.setGlobalProxyFromEnv() (Joyee Cheung) #60953
  • [35b1759d06] - (SEMVER-MINOR) module: allow subpath imports that start with #/ (Jan Martin) #60864
  • [2d72ea66f2] - (SEMVER-MINOR) process: preserve AsyncLocalStorage in queueMicrotask only when needed (Gürgün Dayıoğlu) #60913
  • [6f4a4f6c8e] - (SEMVER-MINOR) sea: split sea binary manipulation code (Joyee Cheung) #61167
  • [c0ceb9b065] - (SEMVER-MINOR) sqlite: enable defensive mode by default (Bart Louwers) #61266
  • [33d8e8303b] - (SEMVER-MINOR) sqlite: add sqlite prepare options args (Guilherme Araújo) #61311
  • [563ab699eb] - (SEMVER-MINOR) src: add initial support for ESM in embedder API (Joyee Cheung) #61548
  • [4c80031000] - (SEMVER-MINOR) stream: add bytes() method to node:stream/consumers (wantaek) #60426
  • [f5233df4ff] - (SEMVER-MINOR) stream: do not pass readable.compose() output via Readable.from() (René) #60907
  • [345a40fda3] - (SEMVER-MINOR) test: use fixture directories for sea tests (Joyee Cheung) #61167
  • [972f82411d] - (SEMVER-MINOR) test_runner: add env option to run function (Ethan Arrowood) #61367
  • [d77f98c4b6] - (SEMVER-MINOR) test_runner: support expecting a test-case to fail (Jacob Smith) #60669
  • [8e900af6ba] - (SEMVER-MINOR) util: add convertProcessSignalToExitCode utility (Erick Wendel) #60963

Commits

  • [180778fb9a] - assert: fix loose deepEqual arrays with undefined and null failing (Ruben Bridgewater) #61587
  • [8b6d31d379] - (SEMVER-MINOR) async_hooks: add trackPromises option to createHook() (Joyee Cheung) #61415
  • [83bcd38d35] - benchmark: add streaming TextDecoder benchmark (Сковорода Никита Андреевич) #61549
  • [4c105844c5] - build: add support for Visual Studio 2026 (Michaël Zasso) #60727
  • [1f84fd91d9] - build: skip sscache action on non-main branches (Joyee Cheung) #61790
  • [30601b680f] - build: add --shared-nbytes configure flag (Antoine du Hamel) #61341
  • [c6253eda49] - build: add --shared-hdr-histogram configure flag (Antoine du Hamel) #61280
  • [584c189037] - build: add --shared-gtest configure flag (Antoine du Hamel) #61279
  • [5998987881] - build: aix: deoptimize implementation-visitor.cc with --shared (Stewart X Addison) #61550
  • [68da144b4e] - build,deps: replace cjs-module-lexer with merve (Yagiz Nizipli) #61456
  • [6a4511bafb] - build,win: fix vs2022 compilation (Stefan Stojanovic) #61530
  • [2d6735db8a] - deps: upgrade npm to 11.9.0 (npm team) #61685
  • [699e2f8f81] - deps: update amaro to 1.1.7 (Node.js GitHub Bot) #61730
  • [7be76316d6] - deps: update minimatch to 10.1.2 (Node.js GitHub Bot) #61732
  • [97e5a65013] - deps: update undici to 7.21.0 (Node.js GitHub Bot) #61683
  • [74e4710ee7] - deps: update googletest to 56efe3983185e3f37e43415d1afa97e3860f187f (Node.js GitHub Bot) #61605
  • [b5113e2a2a] - deps: update amaro to 1.1.6 (Node.js GitHub Bot) #61603
  • [f3a24c76e4] - (SEMVER-MINOR) deps: add LIEF as a dependency (Joyee Cheung) #61167
  • [c370c3dc06] - (SEMVER-MINOR) deps: add tools and scripts to pull LIEF as a dependency (Joyee Cheung) #61167
  • [e54975e17d] - deps: V8: cherry-pick highway@dcc0ca1cd42 (Richard Lau) #61008
  • [625b90b76b] - deps: update undici to 7.19.2 (Node.js GitHub Bot) #61566
  • [05e9a9fb5e] - deps: update undici to 7.19.1 (Node.js GitHub Bot) #61514
  • [3d41643e38] - deps: update undici to 7.19.0 (Node.js GitHub Bot) #61470
  • [17b363a66c] - dns: fix Windows SRV ECONNREFUSED by adjusting c-ares fallback detection (notvivek12) #61453
  • [33d0a8c22d] - doc: clarify EventEmitter error handling in threat model (Matteo Collina) #61701
  • [5b8e72cf85] - doc: mention default option for test runner env (Steven) #61659
  • [f44e67fac2] - doc: fix --inspect security warning section (Tim Perry) #61675
  • [a0e09c9043] - doc: document url.format(urlString) as deprecated under DEP0169 (René) #61644
  • [5e719248fe] - doc: deprecation add more codemod (Augustin Mauroy) #61642
  • [8f5a3e5df4] - doc: fix grammatical error in README.md (ayj8201) #61653
  • [d52b535163] - doc: correct tools README Boxstarter link (Mike McCready) #61638
  • [4889dc4f59] - doc: update server.dropMaxConnection link (YuSheng Chen) #61584
  • [8e48e72f2a] - doc: clean up writing-and-running-benchmarks.md (Hardanish Singh) #61345
  • [1948861d23] - (SEMVER-MINOR) events: repurpose events.listenerCount() to accept EventTargets (René) #60214
  • [d6f7c8d06f] - (SEMVER-MINOR) fs: add ignore option to fs.watch (Matteo Collina) #61433
  • [2d7e5f9581] - http: implement slab allocation for HTTP header parsing (Mert Can Altin) #61375
  • [cb54b3ca6e] - (SEMVER-MINOR) http: add http.setGlobalProxyFromEnv() (Joyee Cheung) #60953
  • [6df8be48ce] - lib: use utf8 fast path for streaming TextDecoder (Сковорода Никита Андреевич) #61549
  • [830fff0aca] - lib: recycle queues (Robert Nagy) #61461
  • [069874bdbd] - lib: use StringPrototypeStartsWith from primordials in locks (Taejin Kim) #61492
  • [7824c7589e] - lib: unify ICU and no-ICU TextDecoder (Сковорода Никита Андреевич) #61409
  • [f81430702a] - lib: prefer call() over apply() if argument list is not array (Livia Medeiros) #60796
  • [a723f72e1e] - lib: add support for readable byte streams to .toWeb() (Hans Klunder) #58664
  • [b78d814b3d] - meta: persist sccache daemon until end of build workflows (René) #61639
  • [40a872a4b9] - meta: bump github/codeql-action from 4.31.9 to 4.32.0 (dependabot[bot]) #61622
  • [0637bdb3be] - meta: bump step-security/harden-runner from 2.14.0 to 2.14.1 (dependabot[bot]) #61621
  • [e8d9bd9fc5] - meta: bump actions/setup-python from 6.1.0 to 6.2.0 (dependabot[bot]) #61627
  • [c517df2b65] - meta: bump actions/setup-node from 6.1.0 to 6.2.0 (dependabot[bot]) #61625
  • [9a64f2f25d] - meta: bump actions/cache from 5.0.1 to 5.0.3 (dependabot[bot]) #61624
  • [0e5922e95e] - meta: bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (dependabot[bot]) #61623
  • [5da7b51091] - meta: bump actions/stale from 10.1.0 to 10.1.1 (dependabot[bot]) #61620
  • [c085c8a43f] - meta: bump actions/checkout from 6.0.1 to 6.0.2 (dependabot[bot]) #61619
  • [ce2acf0275] - meta: bump actions/download-artifact from 6.0.0 to 7.0.0 (dependabot[bot]) #61242
  • [629f0eaac5] - meta: bump actions/checkout from 6.0.0 to 6.0.1 (dependabot[bot]) #61239
  • [cd80d369c9] - meta: bump actions/upload-artifact from 5.0.0 to 6.0.0 (dependabot[bot]) #61238
  • [8c75e4e1fa] - meta: bump actions/checkout from 5.0.1 to 6.0.0 (dependabot[bot]) #60925
  • [5a9e9f4127] - meta: bump actions/checkout from 5.0.0 to 5.0.1 (dependabot[bot]) #60767
  • [1519251dd1] - module: do not invoke resolve hooks twice for imported cjs (Joyee Cheung) #61529
  • [8d7190b3fe] - module: do not wrap module._load when tracing is not enabled (Joyee Cheung) #61479
  • [35b1759d06] - (SEMVER-MINOR) module: allow subpath imports that start with #/ (Jan Martin) #60864
  • [7a83b38921] - net: defer synchronous destroy calls in internalConnect (RajeshKumar11) #61658
  • [16bab79421] - process: do not truncate long strings in --print (Mohamed Akram) #61497
  • [2d72ea66f2] - (SEMVER-MINOR) process: preserve AsyncLocalStorage in queueMicrotask only when needed (Gürgün Dayıoğlu) #60913
  • [9cc1c4604f] - repl: fix getters triggering side effects during completion (Dario Piotrowicz) #61043
  • [93703306a1] - repl: tab completion targets <class> instead of new <class> (Đỗ Trọng Hải) #60319
  • [6f4a4f6c8e] - (SEMVER-MINOR) sea: split sea binary manipulation code (Joyee Cheung) #61167
  • [46a2dad4db] - sqlite: avoid extra copy for large text binds (Ali Hassan) #61580
  • [f91a377f7e] - sqlite: use DictionaryTemplate for run() result (Mert Can Altin) #61432
  • [0e7571ae3e] - sqlite: change approach to fix segfault SQLTagStore (Bart Louwers) #60462
  • [8e8f70524a] - sqlite: reserve vectors space (Guilherme Araújo) #61540
  • [c0ceb9b065] - (SEMVER-MINOR) sqlite: enable defensive mode by default (Bart Louwers) #61266
  • [33d8e8303b] - (SEMVER-MINOR) sqlite: add sqlite prepare options args (Guilherme Araújo) #61311
  • [f0d8f37002] - src: elide heap allocation in structured clone implementation (Anna Henningsen) #61703
  • [db478c4336] - src: use simdutf for one-byte string UTF-8 write in stringBytes (Mert Can Altin) #61696
  • [563ab699eb] - (SEMVER-MINOR) src: add initial support for ESM in embedder API (Joyee Cheung) #61548
  • [da13186a15] - src: throw RangeError on failed ArrayBuffer BackingStore allocation (Chengzhong Wu) #61480
  • [4c80031000] - (SEMVER-MINOR) stream: add bytes() method to stream/consumers (wantaek) #60426
  • [f5233df4ff] - (SEMVER-MINOR) stream: do not pass readable.compose() output via Readable.from() (René) #60907
  • [ad04a469c8] - test: restraint version replacement pattern in snapshots (Chengzhong Wu) #61748
  • [2d3b4a8d65] - test: print stack immediately avoiding GC interleaving (Chengzhong Wu) #61699
  • [38f43a6d4e] - test: fix case-insensitive path matching on Windows (Matteo Collina) #61682
  • [06513f5ff2] - test: fix flaky test-performance-eventloopdelay (Matteo Collina) #61629
  • [9d79c66c61] - test: remove duplicate wpt tests (Filip Skokan) #61617
  • [eac9f4f401] - test: fix race condition in watch mode tests (Matteo Collina) #61615
  • [ecf5947575] - test: update WPT for url to e3c46fdf55 (Node.js GitHub Bot) #61602
  • [356ff5fece] - test: use the skipIfNoWatch() utility function (Luigi Pinca) #61531
  • [4b2187aea2] - test: unify assertSnapshot common patterns (Chengzhong Wu) #61590
  • [8c25489d63] - test: split test-fs-watch-ignore-* (Luigi Pinca) #61494
  • [43b8a2b7e7] - test: add some validation for JSON doc output (Antoine du Hamel) #61413
  • [345a40fda3] - (SEMVER-MINOR) test: use fixture directories for sea tests (Joyee Cheung) #61167
  • [24cf6b8326] - test: reveal wpt evaluation errors in status files (Chengzhong Wu) #61358
  • [d4034dfb62] - test: forbid use of named imports for fixtures (Antoine du Hamel) #61228
  • [4f871ee897] - test: enforce better never-settling-promise detection (Antoine du Hamel) #60976
  • [8e9adedf02] - test: ensure assertions are reached on all tests (Antoine du Hamel) #60845
  • [273832802e] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60763
  • [e06adcb52f] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60760
  • [aeed0ccc02] - test: use RegExp.escape to improve test reliability (Antoine du Hamel) #60803
  • [74bcd0adab] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60728
  • [407807b08e] - test: skip tests not passing without NODE_OPTIONS support (Antoine du Hamel) #60912
  • [a9e70cefb0] - test: ensure assertions are reached on more tests (Antoine du Hamel) #60634
  • [21b23cd0d0] - test_runner: fix test enqueue when test file has syntax error (Edy Silva) #61573
  • [6a4de694b2] - test_runner: fix passing expectFailure (Moshe Atlow) #61568
  • [6640de2b0f] - test_runner: differentiate todo and failure styles (Moshe Atlow) #61564
  • [972f82411d] - (SEMVER-MINOR) test_runner: add env option to run function (Ethan Arrowood) #61367
  • [d77f98c4b6] - (SEMVER-MINOR) test_runner: support expecting a test-case to fail (Jacob Smith) #60669
  • [f98986cbb9] - tools: switch to ARM runners on GHA jobs (Antoine du Hamel) #61903
  • [034589dd93] - tools: avoid building twice in coverage jobs (Antoine du Hamel) #61899
  • [e50e2f00bb] - tools: use ubuntu-slim runner in GHA (Antoine du Hamel) #61759
  • [f658f48ccb] - tools: use ubuntu-slim runner in GHA (Antoine du Hamel) #61734
  • [65c77d74ff] - tools: use ubuntu-latest runner in notify-on-push workflow (Antoine du Hamel) #61742
  • [605905556a] - tools: enforce removal of lts-watch-* labels on release proposals (Antoine du Hamel) #61672
  • [f0f98d4c03] - tools: use ubuntu-slim runner in meta GitHub Actions (Tierney Cyren) #61663
  • [ab63ddf354] - tools: add LIEF to license builder (Chengzhong Wu) #61523
  • [8a0f6192c9] - tools: enforce trailing commas in test/es-module (Antoine du Hamel) #60891
  • [4afbbcf39e] - tools: enforce trailing commas in test/sequential (Antoine du Hamel) #60892
  • [4c1abf752c] - tools,win: upgrade install additional tools to Visual Studio 2026 (Mike McCready) #61562
  • [8e900af6ba] - (SEMVER-MINOR) util: add convertProcessSignalToExitCode utility (Erick Wendel) #60963

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

SHASUMS

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

27ac48f94c7e88f4b0c5d9077f0fec10256289c7dca21e0d9f82cbaad13d6e3d  node-v24.14.0-aix-ppc64.tar.gz
63d07136eead197b66c58f4ee6c4343e0b4027cc3a1f852ada45b081250e21b7  node-v24.14.0-arm64.msi
a1a54f46a750d2523d628d924aab61758a51c9dad3e0238beb14141be9615dd3  node-v24.14.0-darwin-arm64.tar.gz
448f01d4dfa5a21d280cfbacf00abc22b51aad52f38db0f4886e0e5d00df541d  node-v24.14.0-darwin-arm64.tar.xz
f2879eb810e25993a0578e5d878930266fd2eafcffe9f2839b3d8db354d4879e  node-v24.14.0-darwin-x64.tar.gz
c17b234c4db75eeb03c3a86664428ec25ee849e1ebbe8cb05c4a70f282187866  node-v24.14.0-darwin-x64.tar.xz
bc1505c8e2b2b1f7b7cf3808bf53691e5d110c816d1bc1a48075195c5dcafe05  node-v24.14.0-headers.tar.gz
87d1a7d80599ce330de0f0832f6b85c7d93c5be7b6a203725afa016405227988  node-v24.14.0-headers.tar.xz
f44740cd218de8127f1c44c41510a3a740fa5c9c8d1cdce1c3bedada79f3cde7  node-v24.14.0-linux-arm64.tar.gz
e7adfca03d9173276114a6f2219df1a7d25e1bfd6bbd771d3f839118a2053094  node-v24.14.0-linux-arm64.tar.xz
83b263f9c2ea946c0c4a15c3caea6470dc49fe0beb6f33dfd29aa9128250637a  node-v24.14.0-linux-ppc64le.tar.gz
33beedaf3ff82ee511cfc5ca0cc7076161a54a982321d061409299e27bc5f41e  node-v24.14.0-linux-ppc64le.tar.xz
8fa220a1f7b7769605c2e929fdbf736822997bf4cf88a3db05188eabd7712328  node-v24.14.0-linux-s390x.tar.gz
d133f1aac2d6dbaa4de9fe183184e57adbc9f45d62e37f55a864c8af92d4cb5a  node-v24.14.0-linux-s390x.tar.xz
dbf5b8665dec15e59e6359a517fefb47b23fdb9152d8def975b9bca3dfc6d355  node-v24.14.0-linux-x64.tar.gz
41cd79bb7877c81605a9e68ec4c91547774f46a40c67a17e34d7179ef11729df  node-v24.14.0-linux-x64.tar.xz
5514f833980f172088ce22883000d1aea9db9eea41cb1a306154eb4f333ec1c0  node-v24.14.0.pkg
852c73dd5b6ba15b231d036da6312dbcdabd6295adc3940586f3187b77731cf3  node-v24.14.0.tar.gz
9fe025ef4028aba95d16e7810518bf4a5e8abfb0bdc07d8a3fdbb0afd538d77f  node-v24.14.0.tar.xz
6cd8d95799dc70e89585522e5cfe5d576b6ac44f6ff5afc0a4b0318c9f7aa8cd  node-v24.14.0-win-arm64.7z
88d36e8109736a2fa9bdc596f2cf507a3c52c69cdf96e54f8acd473ec14be853  node-v24.14.0-win-arm64.zip
90f18586ef8ca13dd94e7f571d27b8a5120116fea218bcc41e3ef6697dcbc777  node-v24.14.0-win-x64.7z
313fa40c0d7b18575821de8cb17483031fe07d95de5994f6f435f3b345f85c66  node-v24.14.0-win-x64.zip
e75802e82be6875b03b63377a9e12e4416799d0fb6dd460f0605d29144d386a6  node-v24.14.0-x64.msi
8c5fd45a4a1fd3cc4a6f07da8803b05194108906cb6fb7d962448a12582a5922  win-arm64/node.exe
59f1c42e5962e9333bb1673c21125b7a7ce9a6908299aee8f7673803c2e24212  win-arm64/node.lib
5a7c7261b40fd4e39bc4410e23d31e48857d737d830434ea2dc215fec892a8dd  win-arm64/node_pdb.7z
3bf09a2b133893208ad48b3c439dad570aa4cc2a5fe842bc137f795aa4e72944  win-arm64/node_pdb.zip
63c259c81e5d472b5f11c8d506070130cb04a1ecf84b80377a34ed6ec9048088  win-x64/node.exe
35fcdd35d3d22e283c0e2e095cc43ef676301bb85f950c344a73d59231bd7e61  win-x64/node.lib
802553494ca6c8049aa542ddcc54e2616a0a1819ae23f894767a4110a1ec0b5a  win-x64/node_pdb.7z
b8e1aee14390b2828ede1f4b89ed8a8b0c5da40e43fbfe14dc4b42dc14ed3710  win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEEI9StI21e7DMQ5spl7AUGb2S+AoFAmmdxM8ACgkQl7AUGb2S
+AqtGg//VNRQePlUD0cVBO0AnCnV4LlkmkIdxYDmD1Myk2blqC1rvLsGDj1kwfp0
cOrDI1PvnYrasK9N5Q1cF+g9ZJDgv59v8lLkPYng8hYPiVgyYE4e00QSPMebDzwu
jwIZtNdR0sdD6nAq3WLQQFqkvytj2y4OhL1w4+OiXomBXYRC7CU3/ZwzEsrJ/od6
QeO10KezF3luDGiMXVoJzn1pxm6Itvcdyqu0DZkBsbX6IrzR+Kbb2wv/dWUafas+
PM9J89QhV4UTgRSHo6O5FnG6ZStcOpa/o4yCWmO9EA1GBv/n3Jnr/uk8zNE2ODwe
TV0OiJnbUrCx0dQQTx42wVQL+Ust/PLu5m5csnO0R5E/QCVBxwwF6+CnPyNP6HgF
fA+2PoKuv5pSCbfupfJg0KLSxToX6p3wO02sRzQnpzY8usdEel071n6246TjYRqM
o4nS5FgLlBLd1djKjOna62QYsKtOvldZ1+R96rQBOW7oYeAG9vggGcbuWN2y2zvu
ctcVpC3+cj2wEQ/N2NQOz/Zd//m8j19XgIoNxHuU6w0xGXxHnyTpJhrd5bI3L3R4
QMK+v67uM9qVLPPZdEFbRpwVv/UhtM2jewcQtwnplo2dseWO3n+CXgRs8DOK5JKX
RN7ozy+bCPm3ayU6O01MmUiUaD9PQA/lIE2M4jZ9qfmhWuTlk20=
=i+aM
-----END PGP SIGNATURE-----