Node: 18
Upgrade your dependencies or use --openssl-legacy-provider (not recommended for production). The node: Protocol Node 18 strongly encourages using the node: import prefix for built-in modules. This is mandatory if you use ES modules ( "type": "module" in package.json ).
For small microservices or internal tools, Node 18's test runner eliminated configuration fatigue. No more jest.config.js , no more mocha --timeout . Just node --test and go. Streaming in Node has always been powerful but verbose. Node 18 shipped the Web Streams API as a global, matching the spec used in browsers. node 18
// test/basic.test.js import test from 'node:test'; import assert from 'node:assert'; test('synchronous passing test', (t) => assert.strictEqual(1, 1); ); For small microservices or internal tools, Node 18's
test('asynchronous passing test', async (t) => assert.strictEqual(await Promise.resolve(2), 2); ); Streaming in Node has always been powerful but verbose
This wasn't just about convenience. It reduced bundle sizes, improved standardization, and made isomorphic JavaScript (code that runs identically on client and server) a true reality. Okay, maybe not death , but a serious challenge. Node 18 introduced an experimental test runner that later became stable in Node 20. For the first time, you could write and run tests without a single devDependency .
Published: April 14, 2026 Author: The Dev Insider