Latest in branch 16.x
16.20.2
Released 08 Aug 2023
(2 years ago)
SoftwareNode.js
Branch16.x
StatusLTS
End of life
Initial release16.0.0
20 Apr 2021
(5 years ago)
Latest release16.20.2
08 Aug 2023
(2 years ago)
CodenameGallium
End of bug fixes18 Oct 2022
(Ended 3 years, 6 months ago)
End of security fixes11 Sep 2023
(Ended 2 years, 8 months ago)
Release noteshttps://github.com/nodejs/node/releases/tag/v16.20.2
Source codehttps://github.com/nodejs/node/tree/v16.20.2
Documentationhttps://nodejs.org/dist/latest-v16.x/docs/api/
Downloadhttps://nodejs.org/download/release/latest-v16.x/
Node.js 16.x ReleasesView full list

What Is New in Node.js 16?

CategoryChange
New FeaturesV8 9.0 -- RegExp match indices, Atomics.waitAsync
New Featuresnpm 7 included (workspaces support)
New FeaturesStable timers/promises API
ImprovementsApple Silicon (M1) prebuilt binaries
ImprovementsAbortController and AbortSignal globally available
ImprovementsDNS: verbatim option for system resolver order
SecurityOpenSSL 1.1.1 (switches to 3.0 in 17)
Deprecatedprocess.binding() stabilization curtailed

Apple Silicon Support -- Native M1 Binaries

Node.js 16 ships prebuilt binaries for Apple Silicon (arm64). Prior to this, M1 Mac users ran Node.js under Rosetta 2, which worked but had performance overhead. Native arm64 binaries eliminate that translation layer.

If you install Node.js via nvm or a Node version manager, make sure your version manager itself is running natively (arm64) -- otherwise it may install the wrong architecture binary.

npm 7 and Workspaces

Node.js 16 bundles npm 7, which introduces workspaces -- a first-class monorepo feature. You can define multiple packages in a single repository and run commands across all of them.

// package.json
{
  "workspaces": ["packages/*"]
}
// npm install at root now links all workspace packages

npm 7 also automatically installs peer dependencies, which is a behavior change from npm 6. This can cause install failures if peer dependency requirements in your dependency tree conflict.

Stable timers/promises and AbortController

The timers/promises module stabilizes in Node.js 16, providing promise-based setTimeout, setInterval, and setImmediate.

import { setTimeout } from 'node:timers/promises';
await setTimeout(1000);
console.log('1 second elapsed');

AbortController and AbortSignal are now globally available without import, matching the browser API. You can cancel fetch requests, timers, and other async operations using a single abort controller.

RegExp Match Indices (d flag)

V8 9.0 adds the d flag to regular expressions, which records start and end indices of each match. Useful for syntax highlighters, parsers, and code analysis tools.

const re = /foo/d;
const match = re.exec('foobar');
console.log(match.indices[0]); // [0, 3]

FAQ

Is Node.js 16 an LTS release?
Yes. Node.js 16 (codename "Gallium") is an LTS release. Its support ended in September 2023 -- earlier than planned because OpenSSL 1.1.1 itself reached end-of-life.

Why did npm 7 break my install?
Automatic peer dependency installation changed the resolution algorithm. If you see ERESOLVE errors, use npm install --legacy-peer-deps temporarily while you update conflicting packages.

Does AbortSignal work with Node.js streams?
Yes, from Node.js 16 onwards streams accept an AbortSignal option to cancel streaming operations cleanly without destroying the stream listener manually.

What happened to the AbortController timeout shorthand?
AbortSignal.timeout(ms) was added in Node.js 17, not 16. In v16 you'd manually call abort() after a delay.

Can I run native arm64 and x64 Node.js side-by-side on Apple Silicon?
Yes, using different shell environments (native Terminal vs Rosetta Terminal) or with nvm's architecture flags. Tools like nvm support --default-packages per arch profile.

Releases In Branch 16.x

VersionRelease datenpm version
16.20.208 Aug 2023
(2 years ago)
8.19.4
16.20.120 Jun 2023
(2 years ago)
8.19.4
16.20.028 Mar 2023
(3 years ago)
8.19.4
16.19.116 Feb 2023
(3 years ago)
8.19.3
16.19.013 Dec 2022
(3 years ago)
8.19.3
16.18.104 Nov 2022
(3 years ago)
8.19.2
16.18.012 Oct 2022
(3 years ago)
8.19.2
16.17.123 Sep 2022
(3 years ago)
8.15.0
16.17.016 Aug 2022
(3 years ago)
8.15.0
16.16.007 Jul 2022
(3 years ago)
8.11.0
16.15.101 Jun 2022
(3 years ago)
8.11.0
16.15.026 Apr 2022
(4 years ago)
8.5.5
16.14.217 Mar 2022
(4 years ago)
8.5.0
16.14.116 Mar 2022
(4 years ago)
8.5.0
16.14.008 Feb 2022
(4 years ago)
8.3.1
16.13.210 Jan 2022
(4 years ago)
8.1.2
16.13.101 Dec 2021
(4 years ago)
8.1.2
16.13.026 Oct 2021
(4 years ago)
8.1.0
16.12.020 Oct 2021
(4 years ago)
8.1.0
16.11.112 Oct 2021
(4 years ago)
8.0.0
16.11.008 Oct 2021
(4 years ago)
8.0.0
16.10.022 Sep 2021
(4 years ago)
7.24.0
16.9.110 Sep 2021
(4 years ago)
7.21.1
16.9.007 Sep 2021
(4 years ago)
7.21.1
16.8.025 Aug 2021
(4 years ago)
7.21.0
16.7.018 Aug 2021
(4 years ago)
7.20.3
16.6.211 Aug 2021
(4 years ago)
7.20.3
16.6.103 Aug 2021
(4 years ago)
7.20.3
16.6.029 Jul 2021
(4 years ago)
7.19.1
16.5.014 Jul 2021
(4 years ago)
7.19.1
16.4.205 Jul 2021
(4 years ago)
7.18.1
16.4.101 Jul 2021
(4 years ago)
7.18.1
16.4.023 Jun 2021
(4 years ago)
7.18.1
16.3.003 Jun 2021
(4 years ago)
7.15.1
16.2.019 May 2021
(4 years ago)
7.13.0
16.1.004 May 2021
(5 years ago)
7.11.2
16.0.020 Apr 2021
(5 years ago)
7.10.0