October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk2 min

What Node.js 23 Changed: ESM, Type Stripping and Better Scripts

Node.js 23 brought synchronous ES module loading through require(), stable node --run, and coverage-file globs. Here are the release boundaries and later Node 22 and 23 updates.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Node.js 23 made it easier to bridge CommonJS and ES modules, run package scripts directly, and match coverage files with globs. The headline change, require(esm), had an important limit: in Node 23.0.0 it was experimental and could load only a synchronous ES module graph. These changes arrived across several releases, and some were also available in Node 22.

What Node.js 23.0.0 added

Released on October 16, 2024, Node.js 23.0.0 highlighted three changes: enabling require(esm) by default, stabilizing node --run, and adding glob pattern support for test coverage files. The release announcement describes the version as Current. Node.js 23.0.0 release announcement

As an Amazon Associate I earn from qualifying purchases.

Loading ES modules with require()

CommonJS code could use require() to load a native ES module, provided the module and its dependencies formed a synchronous graph. The result was an ES module namespace object. If any module in the graph used top-level await, loading could fail with ERR_REQUIRE_ASYNC_MODULE.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“Enabled by default” did not mean “fully stable”: the Node.js project still classified the feature as experimental in 23.0.0 and asked users for feedback. Compatible packages could check process.features.require_module. The release notes also describe the "module-sync" exports condition for directing compatible require() and import consumers to an appropriate entry point. See the 23.0.0 release notes for the release-specific details.

Running package scripts with node --run

Node 23.0.0 marked node --run stable. It lets you run a script declared in package.json from the Node executable. The documented change concerns script execution; it does not make Node a replacement for a package manager’s dependency-installation functions.

Coverage-file glob patterns

The built-in test runner gained glob pattern support for coverage files. This makes it possible to match multiple coverage files using patterns, rather than treating the change as a general overhaul of how the test runner selects tests.

Can you require an ES module in Node.js?

In Node 23.0.0, yes, when the ES module graph can be evaluated synchronously. A module graph that includes top-level await falls outside that boundary and can trigger ERR_REQUIRE_ASYNC_MODULE. The feature was experimental in that release, so projects relying on it needed to account for that status as well as the asynchronous-module limitation. Node.js 23.0.0 release announcement

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Was require(esm) exclusive to Node 23?

No. Node.js 22.12.0, released on November 21, 2024, also enabled require(esm) by default. The behavior therefore was not exclusive to the Node 23 line. The release notes identify Node 22.12.0 as an LTS release. Node.js 22.12.0 release announcement

Release What the cited release established
Node.js 23.0.0, October 16, 2024 require(esm) enabled by default but experimental; stable node --run; coverage-file glob support. Release notes
Node.js 22.12.0, November 21, 2024 require(esm) enabled by default in the Node 22 line. Release notes

Can Node run TypeScript files without a build step?

Node.js 23.6.0 enabled --experimental-strip-types by default, allowing Node to execute .ts files that use syntax within the feature’s supported subset. The release, published January 7, 2025, still described type stripping as experimental and documented limitations. It removes supported type syntax for execution; it is not a full TypeScript compilation pipeline and does not perform type checking. Node.js 23.6.0 release announcement

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Why the “Node strikes back” framing fits

Bytes issue 341, published November 14, 2024, presented Node 23 as a response to developer-facing capabilities associated with newer runtimes, emphasizing module interoperability and a smoother scripting experience. The release details make the story more specific than a claim that Node copied every rival feature or ended the CommonJS-to-ESM transition: the changes had defined limits, some were experimental, and require(esm) also reached Node 22.12.0. Bytes #341 — Node strikes back

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.