((top)) | Node 18
// Good import readFile from 'node:fs/promises'; // Bad (in ESM, this might break with bundlers) import readFile from 'fs'; Short answer: No for new projects. Long answer: It depends.
test('asynchronous passing test', async (t) => assert.strictEqual(await Promise.resolve(2), 2); ); node 18
Let’s be honest: in the JavaScript ecosystem, FOMO (Fear Of Missing Out) is real. The moment a new version of Node drops, many developers rush to update. But while the community clamors over Node 20, 22, or even 24, a quiet workhorse is powering millions of production applications: . // Good import readFile from 'node:fs/promises'; // Bad
But as of April 2026, Node 18 belongs in the history books—not your production servers. If you haven't migrated to Node 20 (and soon, 22), treat this as your wake-up call. The moment a new version of Node drops,
Node 18 fixed that. By shipping the , it finally aligned the server with the browser.
Node 18 reached EOL (End of Life) in April 2025. That means no more security patches. Running it today is a security risk unless your app is completely offline.
Let's look under the hood. 1. Native Fetch API (No More node-fetch ) For years, making an HTTP request in Node meant one of two things: installing node-fetch or using axios . It felt archaic that the runtime didn't include the same fetch your browser had.

