Node.js 23.0.0 Released with Default Support for Requiring ESM and Stable Test Runner

The OpenJS Foundation has announced the release of Node.js 23.0.0, marking a significant milestone in JavaScript module interoperability. The headline feature is the default enablement of requiring ECMAScript Modules synchronously. This change allows developers to load ESM files using the standard require function without needing the experimental flag, provided the target module does not contain top-level await. This simplifies the transition for projects moving from CommonJS to ESM. Beyond module changes, the internal test runner has been promoted to a stable feature, offering a robust and dependency-free testing solution directly within the runtime. The update also includes the removal of support for 32-bit Windows, a move intended to streamline development resources and focus on modern architectures. Various internal dependencies like V8 have been updated to improve performance and compatibility with the latest JavaScript language specifications. For enterprise users, it is important to note that Node.js 23 is an odd-numbered release and will not become an LTS version. Teams requiring high stability should remain on Node.js 22 or 20 for production environments. However, for developers looking to simplify their build pipelines or leverage the latest native testing tools, Node.js 23 provides a much more streamlined experience by reducing the friction between different module systems and providing essential tools out of the box.
Comparison
| Aspect | Before / Alternative | After / This |
|---|---|---|
| ESM Integration | Requires --experimental-require-module flag | Enabled by default for synchronous ESM |
| Built-in Test Runner | Experimental status | Stable and production-ready |
| Windows Support | Supports both 32-bit and 64-bit | Supports 64-bit only (32-bit removed) |
Action Checklist
- Verify Windows server architectures Ensure no production builds rely on 32-bit Windows environments
- Test module imports without flags Remove --experimental-require-module from scripts if present
- Evaluate LTS vs Current version Stick to Node.js 22 for long-term production stability
Source: Node.js Official Blog
This page summarizes the original source. Check the source for full details.

