{"id":5396,"date":"2024-11-04T12:53:29","date_gmt":"2024-11-04T12:53:29","guid":{"rendered":"https:\/\/evincedev.com\/blog\/?p=5396"},"modified":"2026-01-09T09:25:29","modified_gmt":"2026-01-09T09:25:29","slug":"node-js-23-latest-updates-and-improvements-you-must-know","status":"publish","type":"post","link":"https:\/\/evincedev.com\/blog\/node-js-23-latest-updates-and-improvements-you-must-know\/","title":{"rendered":"Node.js 23: Latest Updates and Improvements You Must Know"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Node.js 23 has arrived, packed with exciting updates and powerful features for developers. This latest release brings a host of improvements that make Node.js faster, more efficient, and more versatile than ever before. For developers engaged in <\/span><a href=\"https:\/\/evincedev.com\/node-js-development-services\"><b>Node.js development<\/b><\/a><span style=\"font-weight: 400;\">, keeping up with these changes is crucial to maximising productivity and performance. In this post, we\u2019ll dive into <\/span><strong><a href=\"https:\/\/nodejs.org\/en\/blog\/release\/v23.0.0\" target=\"_blank\" rel=\"nofollow\">Node.js 23<\/a><\/strong><span style=\"font-weight: 400;\">\u2019s standout features, enhancements, and why it\u2019s a game-changer for web and software development.<\/span><\/p>\n<h3><b>What Are the Updates in Node.js 23?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">We\u2019re excited to announce the release of Node.js 23! This version brings several impactful updates aimed at improving both developer experience and application performance. Here\u2019s a look at the key highlights:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Enabling require(<\/b><b>esm<\/b><b>) by Default<\/b><span style=\"font-weight: 400;\">: Native ES module loading using <\/span><span style=\"font-weight: 400;\">require()<\/span><span style=\"font-weight: 400;\"> is now enabled by default.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Dropping Support for Windows 32-bit Systems<\/b><span style=\"font-weight: 400;\">: Node.js 23 no longer supports Windows 32-bit, streamlining focus on more widely used systems.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Stabilising the <\/b><b>node &#8211;run<\/b><b> Command<\/b><span style=\"font-weight: 400;\">: The <\/span><strong>&#8211;run<\/strong><span style=\"font-weight: 400;\"> command has been stabilised, improving command-line functionality.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Enhanced Test Runner<\/b><span style=\"font-weight: 400;\">: New support for glob patterns in test runner coverage files enables more flexible testing options.<\/span><\/li>\n<\/ul>\n<blockquote class=\"twitter-tweet\">\n<p dir=\"ltr\" lang=\"en\">\ud83d\ude80 Node.js 23 is here! \ud83d\ude80<\/p>\n<p>New features, performance boosts, and a smoother developer experience. With better compatibility and stability, Node.js 23 delivers more power for building efficient apps.<\/p>\n<p>Read here: \ud83d\udc49<a href=\"https:\/\/t.co\/eQPMJSOuPH\" target=\"_blank\" rel=\"nofollow\">https:\/\/t.co\/eQPMJSOuPH<\/a><a href=\"https:\/\/twitter.com\/hashtag\/NodeJS?src=hash&amp;ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">#NodeJS<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/JavaScript?src=hash&amp;ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">#JavaScript<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/WebDevelopment?src=hash&amp;ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">#WebDevelopment<\/a> <a href=\"https:\/\/t.co\/4swcjE7pm2\" target=\"_blank\" rel=\"nofollow\">pic.twitter.com\/4swcjE7pm2<\/a><\/p>\n<p>\u2014 Node.js (@nodejs) <a href=\"https:\/\/twitter.com\/nodejs\/status\/1846570654297887011?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"nofollow\">October 16, 2024<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">Node.js 23 will replace Node.js 22 as the &#8220;Current&#8221; release line once Node.js 22 enters Long-Term Support (LTS) later this month. This means Node.js 23 will be the Current release for the next six months, remaining so until April 2025. Below, we break down some of these key features in more detail.<\/span><\/p>\n<h4><b>Enabling require(esm) by Default<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">One of the most anticipated updates in Node.js 23 is the default enablement of native ES module support with <\/span><span style=\"font-weight: 400;\">require()<\/span><span style=\"font-weight: 400;\">. In earlier Node.js versions like v20.x and v22.x, this feature was only accessible through the <\/span><strong>&#8211;experimental-require-module<\/strong><span style=\"font-weight: 400;\"> flag. However, in Node.js 23, <\/span><span style=\"font-weight: 400;\">require(esm)<\/span><span style=\"font-weight: 400;\"> is enabled by default, making it easier for developers to load ES modules natively without additional configuration.<\/span><\/p>\n<p><b>How It Works:<\/b><\/p>\n<p><span style=\"font-weight: 400;\">When using <\/span><span style=\"font-weight: 400;\">require()<\/span><span style=\"font-weight: 400;\"> to load an ES module in Node.js 23, the runtime no longer throws an error (<\/span><span style=\"font-weight: 400;\">ERR_REQUIRE_ESM<\/span><span style=\"font-weight: 400;\">) if the <\/span><span style=\"font-weight: 400;\">require()<\/span><span style=\"font-weight: 400;\"> method encounters a native ES module. However, it may throw <\/span><strong>ERR_REQUIRE_ASYNC_MODULE<\/strong><span style=\"font-weight: 400;\"> if the module or any of its dependencies include top-level <\/span><span style=\"font-weight: 400;\">await<\/span><span style=\"font-weight: 400;\"> statements. When successfully loaded, the ES module will return as a namespace object similar to the one provided by the <\/span><strong>import()<\/strong><span style=\"font-weight: 400;\"> statement. This object can be verified using <\/span><span style=\"font-weight: 400;\">util.isModuleNamespaceObject()<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>Key Notes on require(<\/b><span style=\"font-weight: 400;\">esm<\/span><b>):<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Feedback and Experimental Phase<\/b><span style=\"font-weight: 400;\">: Since this feature is still experimental, developers can provide feedback on any issues or regressions by reporting them to the Node.js issue tracker.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Disabling the Feature<\/b><span style=\"font-weight: 400;\">: If necessary, you can disable <\/span><span style=\"font-weight: 400;\">require(esm)<\/span><span style=\"font-weight: 400;\"> using the <\/span><span style=\"font-weight: 400;\">&#8211;no-experimental-require-module<\/span><span style=\"font-weight: 400;\"> flag.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Version Synchronisation<\/b><span style=\"font-weight: 400;\">: The unflagging of <\/span><span style=\"font-weight: 400;\">require(esm)<\/span><span style=\"font-weight: 400;\"> may eventually be backported to Node.js 22.x after further testing and feedback.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">To check if <\/span><span style=\"font-weight: 400;\">require(esm)<\/span><span style=\"font-weight: 400;\"> is enabled in your Node.js instance, you can use <\/span><span style=\"font-weight: 400;\">process.features.require_module<\/span><span style=\"font-weight: 400;\">. This feature is expected to simplify module management and make it easier for developers to work with both <\/span><span style=\"font-weight: 400;\">require()<\/span><span style=\"font-weight: 400;\"> and <\/span><span style=\"font-weight: 400;\">import<\/span><span style=\"font-weight: 400;\"> in the same project.<\/span><\/p>\n<h4><b>Removal of Windows 32-bit System Support<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Node.js 23 has officially dropped support for 32-bit Windows systems. This update reflects a shift toward prioritising resources for 64-bit systems, which are more widely used and offer better performance. For developers working in <\/span><b>software development<\/b><span style=\"font-weight: 400;\"> on Windows, this change means that applications running on 32-bit Windows environments should either upgrade their operating systems or remain on an earlier Node.js version.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This decision allows the Node.js team to focus on optimising performance and security for the majority of users, ensuring that Node.js remains efficient and up-to-date.<\/span><\/p>\n<h4><b>Stabilisation of the <\/b><b>node &#8211;run<\/b><b> Command<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">The <\/span><span style=\"font-weight: 400;\">node &#8211;run<\/span><span style=\"font-weight: 400;\"> command, introduced as an experimental feature in previous versions, has been stabilised in Node.js 23. This command streamlines script execution directly from the command line, making it more reliable for production use.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The <\/span><span style=\"font-weight: 400;\">&#8211;run<\/span><span style=\"font-weight: 400;\"> flag improves workflows for developers by enabling quick execution of scripts without complex setups. Whether for testing, debugging, or deploying small applications, the stabilised <\/span><span style=\"font-weight: 400;\">node &#8211;run<\/span><span style=\"font-weight: 400;\"> command simplifies common development tasks, particularly for teams focused on <\/span><b>web development<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h4><b>Enhanced Test Runner with Glob Pattern Support<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Node.js 23 includes improvements to its built-in test runner, including support for glob patterns when specifying coverage files. This enhancement allows developers to specify multiple files or directories for test coverage in a single line, making the testing process more efficient and less prone to human error.<\/span><\/p>\n<p><b>Example Usage of Glob Patterns<\/b><span style=\"font-weight: 400;\">: Using a glob pattern, you can specify multiple test files like this:<\/span><\/p>\n<blockquote><p><span style=\"font-weight: 400;\">node test_runner &#8211;coverage &#8216;.\/tests\/**\/*.test.js&#8217;<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">This flexibility allows developers to include or exclude specific files and folders more easily, speeding up the testing process for projects with large codebases.<\/span><\/p>\n<h4><b>Deprecation of OpenSSL Engine-based APIs<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Node.js 23 has deprecated the <strong>OpenSSL<\/strong> Engine-based APIs, which were used for extending cryptographic functions. This deprecation encourages developers to shift toward more secure, modern cryptographic methods. It\u2019s a forward-looking decision aimed at enhancing security standards across Node.js applications.<\/span><\/p>\n<h4><b>Removal of Experimental Policy Feature<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Node.js 23 has removed the experimental policy feature, which was previously used to control loading behaviour through policy files. This change simplifies Node.js\u2019s feature set and refocuses the platform on stable, widely adopted configurations.<\/span><\/p>\n<h4><b>Platform Support Updates<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Alongside the removal of support for Windows 32-bit, Node.js 23 has updated its platform support to align with current operating system trends. This update improves compatibility and performance on recent OS versions, enabling developers to take full advantage of newer technologies.<\/span><\/p>\n<h4><b>Web Storage API (Experimental)<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Node.js 23 introduces an experimental Web Storage API, providing support for <\/span><span style=\"font-weight: 400;\">localStorage<\/span><span style=\"font-weight: 400;\"> and <\/span><span style=\"font-weight: 400;\">sessionStorage<\/span><span style=\"font-weight: 400;\"> in server environments. This addition brings web-like storage functionality to Node.js, allowing developers to use familiar storage techniques traditionally seen in front-end development. While still experimental, the Web Storage API holds potential for building applications that need simple data storage solutions without a database.<\/span><\/p>\n<h4><b>Experimental TypeScript Support<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">For the first time, Node.js 23 includes experimental TypeScript support, allowing developers to use TypeScript directly in Node.js without extra configuration. This update is a significant step toward making Node.js more TypeScript-friendly, appealing to the growing community of TypeScript developers and enabling smoother integration for type-safe applications.<\/span><\/p>\n<h3><b>Other Key Improvements in Node.js 23<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Node.js 23 also includes a range of other enhancements that benefit both developers and businesses. Here are some additional highlights:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Updated V8 Engine<\/b><span style=\"font-weight: 400;\">: Node.js 23 runs on the latest <strong>V8 JavaScript engine<\/strong>, providing faster execution and improved memory management.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Native Support for ES2023 Features<\/b><span style=\"font-weight: 400;\">: Support for the latest ES2023 syntax and features, like <\/span><span style=\"font-weight: 400;\">Top-Level Await<\/span><span style=\"font-weight: 400;\"> and the Temporal API, which enhances date handling.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Enhanced Console Output<\/b><span style=\"font-weight: 400;\">: Improved console formatting makes debugging more intuitive, which is particularly helpful for developers focusing on <\/span><b>Node.js development<\/b><span style=\"font-weight: 400;\">.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Improved TLS and HTTP\/3 Support<\/b><span style=\"font-weight: 400;\">: With better support for HTTP\/3 and TLS, Node.js 23 provides a more secure environment for building real-time, data-intensive applications.<\/span><\/li>\n<\/ul>\n<h3><b>Benefits of Node.js 23 for Developers and Businesses<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">For companies and developers involved in <\/span><a href=\"https:\/\/evincedev.com\/custom-software-development\"><b>software development<\/b><\/a><span style=\"font-weight: 400;\">, Node.js 23 offers several benefits that enhance both productivity and performance:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Scalability<\/b><span style=\"font-weight: 400;\">: Improved performance allows for more scalable applications that can handle higher traffic without compromising speed or reliability.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Security<\/b><span style=\"font-weight: 400;\">: Enhanced encryption protocols and secure connections reduce the risk of data breaches, which is crucial for modern businesses.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Faster Development<\/b><span style=\"font-weight: 400;\">: Features like <\/span><span style=\"font-weight: 400;\">require(esm)<\/span><span style=\"font-weight: 400;\"> by default and the stabilised <\/span><span style=\"font-weight: 400;\">node &#8211;run<\/span><span style=\"font-weight: 400;\"> command streamline workflows, helping developers focus on building applications without technical roadblocks.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Node.js 23 also presents new possibilities for <\/span><b>web development<\/b><span style=\"font-weight: 400;\"> projects, enabling the creation of high-performing, real-time applications suited to the demands of today\u2019s digital landscape.<\/span><\/p>\n<h3><b>Why Upgrade to Node.js 23?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Upgrading to Node.js 23 brings a range of benefits that help developers and companies stay competitive. From enhanced security and speed to innovative features like native ES module support, Node.js 23 offers tools that improve productivity and project outcomes. By leveraging these updates, teams can build scalable, secure applications with streamlined workflows and reduced infrastructure requirements.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Need help upgrading or developing with Node.js 23? <\/span><a href=\"https:\/\/evincedev.com\/node-js-development-services\"><b>Hire a Node.js developer<\/b><\/a><span style=\"font-weight: 400;\"> from our team to implement these new features in your projects. As a top Node.js development company, <\/span><a href=\"https:\/\/evincedev.com\"><b>EvinceDev<\/b><\/a><span style=\"font-weight: 400;\"> ensures high-quality, future-ready solutions tailored to your business needs.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js 23 has arrived, packed with exciting updates and powerful features for developers. This latest release brings a host of improvements that make Node.js faster, more efficient, and more versatile than ever before. For developers engaged in Node.js development, keeping up with these changes is crucial to maximising productivity and performance. In this post, we\u2019ll [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":5398,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[14,1372],"tags":[20,1322,300,697],"acf":{"question_and_answers":null,"key_takeaways":null},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/posts\/5396"}],"collection":[{"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/comments?post=5396"}],"version-history":[{"count":0,"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/posts\/5396\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/media\/5398"}],"wp:attachment":[{"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/media?parent=5396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/categories?post=5396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evincedev.com\/blog\/wp-json\/wp\/v2\/tags?post=5396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}