14.21.3

Latest release in branch 14.x
Released 3 years ago (February 16, 2023)

Software Node.js
Branch 14.x
Status LTS
End of life
End of bug fixes October 19, 2021
End of security fixes April 30, 2023
First official release version 14.0.0
First official release date 5 years ago (April 21, 2020)
Release notes https://github.com/nodejs/node/releases/tag/v14.21.3
Source code https://github.com/nodejs/node/tree/v14.21.3
Documentation https://nodejs.org/dist/latest-v14.x/docs/api/
Download https://nodejs.org/download/release/latest-v14.x/
Node.js 14.x Releases View full list

What Is New in Node.js 14?

CategoryChange
New FeaturesOptional chaining (?.) and nullish coalescing (??) operators
New FeaturesDiagnostic reports: stable API for process state snapshots
New FeaturesExperimental async local storage (AsyncLocalStorage)
New FeaturesWASI (WebAssembly System Interface) experimental support
ImprovementsV8 8.0 -- optional chaining, nullish coalescing
ImprovementsStreams: more consistent error handling
Improvementsfs.promises API moved from experimental to stable
SecurityOpenSSL 1.1.1g

Optional Chaining and Nullish Coalescing -- Finally Native

Two of the most requested JavaScript features land natively in Node.js 14 via V8 8.0. Optional chaining (?.) short-circuits property access on null/undefined. Nullish coalescing (??) provides a default only when the left side is null or undefined (unlike || which also triggers on 0 or "").

const city = user?.address?.city ?? 'Unknown';
const port = config.port ?? 3000;  // 0 is a valid port, ?? handles that correctly

Previously these required Babel transforms. In Node.js 14 they run natively, reducing transpilation overhead for server-side code.

AsyncLocalStorage -- Request-Scoped Context Without Parameter Passing

AsyncLocalStorage lets you store and retrieve values scoped to an async call tree -- useful for request IDs, user context, logging correlation, and tracing without threading values through every function call.

import { AsyncLocalStorage } from 'node:async_hooks';
const storage = new AsyncLocalStorage();

app.use((req, res, next) => {
  storage.run({ requestId: req.id }, next);
});

function log(msg) {
  const ctx = storage.getStore();
  console.log(`[${ctx?.requestId}] ${msg}`);
}

OpenTelemetry, Datadog APM, and many tracing libraries use this API internally. In v14 it's experimental but widely adopted.

fs.promises Now Stable

The fs.promises API (or import { promises as fs } from 'node:fs') graduates from experimental to stable. All async file operations are available as native promises without callbacks.

import { readFile, writeFile } from 'node:fs/promises';
const content = await readFile('./config.json', 'utf8');
const data = JSON.parse(content);

Diagnostic Reports

The diagnostic report API is now stable. You can generate a JSON snapshot of the process state (heap, handles, libuv, environment variables) on demand or on crash -- invaluable for debugging production issues in environments where you cannot attach a debugger.

process.report.writeReport('./crash-report.json');
// or trigger on signal:
node --report-on-signal --report-signal=SIGUSR2 server.js

FAQ

Is Node.js 14 an LTS release?
Yes. Node.js 14 (codename "Fermium") was an LTS release with active support ending April 2023 and security support ending April 2023. It is fully end-of-life.

Can I use optional chaining with TypeScript in Node.js 14?
Yes. TypeScript has supported ?. since v3.7. When targeting Node.js 14, you can set "target": "ES2020" in tsconfig.json to emit native optional chaining.

Is AsyncLocalStorage production-safe in Node.js 14?
It works well in practice, but the API was officially experimental in v14. It stabilizes fully in Node.js 16. For production usage in v14, include process isolation tests and monitor for async context propagation edge cases.

What is WASI and should I use it in Node.js 14?
WASI (WebAssembly System Interface) lets WASM modules access file system and network resources. In Node.js 14 it is experimental and the API changes across versions. Use it for prototyping only.

Does fs.promises support streaming?
Not directly -- fs.promises is for file reads/writes as resolved data. For streaming, use fs.createReadStream() and fs.createWriteStream(), which return traditional Node.js streams.

Releases In Branch 14.x

Version Release date npm version
14.21.3 3 years ago
(February 16, 2023)
6.14.18
14.21.2 3 years ago
(December 13, 2022)
6.14.17
14.21.1 3 years ago
(November 04, 2022)
6.14.17
14.21.0 3 years ago
(November 01, 2022)
6.14.17
14.20.1 3 years ago
(September 23, 2022)
6.14.17
14.20.0 3 years ago
(July 07, 2022)
6.14.17
14.19.3 3 years ago
(May 17, 2022)
6.14.17
14.19.2 3 years ago
(May 04, 2022)
6.14.17
14.19.1 4 years ago
(March 17, 2022)
6.14.16
14.19.0 4 years ago
(February 01, 2022)
6.14.16
14.18.3 4 years ago
(January 10, 2022)
6.14.15
14.18.2 4 years ago
(November 30, 2021)
6.14.15
14.18.1 4 years ago
(October 12, 2021)
6.14.15
14.18.0 4 years ago
(September 28, 2021)
6.14.15
14.17.6 4 years ago
(August 30, 2021)
6.14.15
14.17.5 4 years ago
(August 11, 2021)
6.14.14
14.17.4 4 years ago
(July 29, 2021)
6.14.14
14.17.3 4 years ago
(July 05, 2021)
6.14.13
14.17.2 4 years ago
(July 01, 2021)
6.14.13
14.17.1 4 years ago
(June 15, 2021)
6.14.13
14.17.0 4 years ago
(May 11, 2021)
6.14.13
14.16.1 5 years ago
(April 06, 2021)
6.14.12
14.16.0 5 years ago
(February 23, 2021)
6.14.11
14.15.5 5 years ago
(February 09, 2021)
6.14.11
14.15.4 5 years ago
(January 04, 2021)
6.14.10
14.15.3 5 years ago
(December 17, 2020)
6.14.9
14.15.2 5 years ago
(December 15, 2020)
6.14.9
14.15.1 5 years ago
(November 16, 2020)
6.14.8
14.15.0 5 years ago
(October 27, 2020)
6.14.8
14.14.0 5 years ago
(October 15, 2020)
6.14.8
14.13.1 5 years ago
(October 07, 2020)
6.14.8
14.13.0 5 years ago
(September 29, 2020)
6.14.8
14.12.0 5 years ago
(September 22, 2020)
6.14.8
14.11.0 5 years ago
(September 15, 2020)
6.14.8
14.10.1 5 years ago
(September 10, 2020)
6.14.8
14.10.0 5 years ago
(September 08, 2020)
6.14.8
14.9.0 5 years ago
(August 27, 2020)
6.14.8
14.8.0 5 years ago
(August 11, 2020)
6.14.7
14.7.0 5 years ago
(July 29, 2020)
6.14.7
14.6.0 5 years ago
(July 20, 2020)
6.14.6
14.5.0 5 years ago
(June 30, 2020)
6.14.5
14.4.0 5 years ago
(June 02, 2020)
6.14.5
14.3.0 5 years ago
(May 19, 2020)
6.14.5
14.2.0 5 years ago
(May 05, 2020)
6.14.4
14.1.0 5 years ago
(April 29, 2020)
6.14.4
14.0.0 5 years ago
(April 21, 2020)
6.14.4