Latest in branch 23.x
23.11.1
Released 14 May 2025
(1 year ago)
SoftwareNode.js
Branch23.x
Status
End of life
Initial release23.0.0
16 Oct 2024
(1 year ago)
Latest release23.11.1
14 May 2025
(1 year ago)
End of bug fixes01 Apr 2025
(Ended 1 year, 1 month ago)
End of security fixes01 Jun 2025
(Ended 11 months ago)
Release noteshttps://github.com/nodejs/node/releases/tag/v23.11.1
Source codehttps://github.com/nodejs/node/tree/v23.11.1
Documentationhttps://nodejs.org/dist/latest-v23.x/
Downloadhttps://nodejs.org/download/release/latest-v23.x/
Node.js 23.x ReleasesView full list

What Is New in Node.js 23?

CategoryChange
New Featuresrequire() of synchronous ES modules enabled by default
New Features--experimental-require-module flag removed (now default behavior)
New Featuresnode:sqlite built-in module added (experimental)
ImprovementsV8 upgraded to 13.0 (ships with Chrome 130)
ImprovementsTest runner: --test-concurrency flag added
ImprovementsWindows 32-bit support dropped
ImprovementsGlob support added in node:fs glob/globSync
SecurityMultiple dependency updates (OpenSSL, libuv, cares)
Deprecatedurl.parse() marked as legacy

require() for ES Modules -- What Changed?

Node.js 23 makes require() of synchronous ES modules work by default. Previously this needed --experimental-require-module. Now you can load ESM files from CommonJS without that flag, as long as the module graph does not use top-level await.

In practice this bridges the interop gap significantly. Many library authors can now ship a single ESM file and have CommonJS consumers load it directly. The .mjs extension and "type": "module" in package.json are still respected.

Built-in SQLite -- node:sqlite

Node.js 23 ships an experimental node:sqlite module backed by SQLite 3. You can open in-memory or file-based databases without any native addon install step.

import { DatabaseSync } from 'node:sqlite';
const db = new DatabaseSync(':memory:');
db.exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)');
const insert = db.prepare('INSERT INTO users (name) VALUES (?)');
insert.run('Alice');
const rows = db.prepare('SELECT * FROM users').all();
console.log(rows);

The API is synchronous by design, matching the typical scripting/tooling use case where blocking I/O is acceptable. Async support is tracked for a future release.

V8 13.0 and Performance Improvements

The V8 engine jumps to version 13.0 (Chrome 130 baseline). This brings additional JavaScript spec features and JIT improvements. Iterator helper methods from the TC39 proposal land natively.

The test runner gains --test-concurrency, letting you control how many test files run in parallel -- useful for CI pipelines where you want to cap resource consumption without going fully sequential.

Platform and Build Changes

Windows 32-bit (ia32) support is dropped in Node.js 23. If you still ship to Windows x86 environments, stay on Node.js 22 LTS. All prebuilt binaries and installers are now 64-bit only on Windows.

The node:fs module gains glob() and globSync(), making path pattern matching a built-in operation. Previously this required fast-glob or glob from npm.

FAQ

Can I use require() with .mjs files in Node.js 23?
Yes, as long as the module is synchronous (no top-level await). Node.js 23 enables this by default without any CLI flag.

Is node:sqlite production-ready?
Not yet -- it ships as experimental in v23. The API may still change before stabilization. Fine for tooling and local scripts, but watch for stability notices before using in production services.

Does dropping Windows 32-bit affect npm packages with native addons?
Only if those addons were targeting ia32 Windows. Most modern addons already went 64-bit only. Check your node_modules with node -p "process.arch" to confirm your runtime architecture.

What Iterator helpers are now available natively?
Methods like .map(), .filter(), .take(), .drop(), .reduce(), and .toArray() are available on iterator objects through V8 13.0's implementation of the TC39 Iterator Helpers proposal.

Should I upgrade production apps from Node.js 22 LTS to 23?
Node.js 23 is a current release, not an LTS. For production workloads, stick with Node.js 22 LTS. Use 23 for testing new features or tooling projects where you control the runtime version.

Releases In Branch 23.x

VersionRelease datenpm version
23.11.114 May 2025
(1 year ago)
10.9.2
23.11.001 Apr 2025
(1 year ago)
10.9.2
23.10.013 Mar 2025
(1 year ago)
10.9.2
23.9.026 Feb 2025
(1 year ago)
10.9.2
23.8.013 Feb 2025
(1 year ago)
10.9.2
23.7.030 Jan 2025
(1 year ago)
10.9.2
23.6.121 Jan 2025
(1 year ago)
10.9.2
23.6.007 Jan 2025
(1 year ago)
10.9.2
23.5.019 Dec 2024
(1 year ago)
10.9.2
23.4.010 Dec 2024
(1 year ago)
10.9.2
23.3.020 Nov 2024
(1 year ago)
10.9.0
23.2.011 Nov 2024
(1 year ago)
10.9.0
23.1.024 Oct 2024
(1 year ago)
10.9.0
23.0.016 Oct 2024
(1 year ago)
10.9.0