TypeScript 5.9 and Node.js 24 LTS: Modernizing Server-Side Development
June 26, 2026The JavaScript ecosystem saw two important updates in 2025: TypeScript 5.9 on August 1, 2025, and Node.js 24, which launched on May 6, 2025, and was promoted to LTS in October. Together, these two releases have made building back-ends and full-stack apps with JavaScript and TypeScript more modern and faster. In this article we review the most important changes in both.
TypeScript 5.9: Deferred Imports
The headline feature of TypeScript 5.9 is support for ECMAScript’s deferred module evaluation proposal via the new import defer syntax. This lets you import a module without executing it immediately; the module is evaluated only when you first access one of its members. This is very useful for improving application startup time and lazily loading heavy modules.
import defer * as heavyModule from "./heavy-module.js";
function onDemand() {
// the module is evaluated at exactly this moment
return heavyModule.compute();
}
The Stable node20 Option
TypeScript 5.9 introduces a stable option called node20 for module and target that models the behavior of Node.js 20 and is unlikely to change in the future. This option is a good choice for projects that want a stable, predictable configuration.
// tsconfig.json
{
"compilerOptions": {
"module": "node20",
"target": "node20"
}
}
Improved Editor Experience
The TypeScript language server now supports a configurable hover length. In VS Code you can change this with the js/ts.hover.maximumLength setting, and the default length of information shown when hovering over symbols has also increased substantially. This is very helpful for reading complex, long types. As a reminder, version 5.8 also added the --erasableSyntaxOnly option, which ensures only TypeScript-specific syntax with no runtime effect is erased—a capability aligned with running TypeScript files directly in Node.js.
Node.js 24: V8 Engine Upgrade
Version 24 is a major release that upgrades the V8 engine to 13.6. This update brings new capabilities such as Float16Array and the RegExp.escape() method. The latter is particularly useful, since manually escaping special characters in regular expressions was always error-prone.
const userInput = "a.b*c";
const safe = RegExp.escape(userInput);
const re = new RegExp(safe); // no worries about special characters
The Permission Model
The permission model, introduced experimentally in Node.js 20, has become more stable and simpler in version 24. Instead of the long --experimental-permission flag, you can now use the shorter, cleaner --permission flag. This model lets you restrict an application’s access to the file system, network, and child processes—which matters a great deal for the security of production services.
node --permission --allow-fs-read=/app/data server.js
Async and HTTP Improvements
In Node.js 24, the AsyncLocalStorage class uses AsyncContextFrame by default, which makes context tracking in async operations more efficient and reliable—important for complex systems and request-tracing middleware. The Undici library has also been upgraded to major version 7, bringing better performance and support for more HTTP features. This release ships with npm 11.0.0, which improves performance, security, and compatibility with modern packages. Node.js 24 is supported until April 2028.
Conclusion
TypeScript 5.9 and Node.js 24 together build a modern foundation for server-side development. import defer and the stable node20 option in TypeScript, alongside the simplified permission model, the V8 upgrade, and Undici 7 in Node.js, raise both security and performance. For those learning Node.js and TypeScript, starting on Node.js 24 LTS is a safe choice; just verify the compatibility of your native dependencies and build tools before upgrading production.