Node.js 18 LTS is now available. What’s new?
Here at NodeSource,releases are a big deal. As a team of experts, enthusiasts, and core contributors to the open-source project, we love seeing the progress of Node! We are also one of the primary distributors of the runtime and have been since version 0.x (2014).
Developers download and use our binaries worldwide for their production environments (over 100m a year and growing!). We are incredibly proud to support this important piece of the Node ecosystem in addition to building and supporting customers on our Node.js platform – N|Solid.
“If you use Linux, we recommend using a NodeSource installer.” – From the NPM Documentation
Overall, the community is looking forward to this release with many new features and other benefits in addition to the official release earlier this year that included:
Security: Upgrading to OpenSSL 3.0
APIs: Fetch API is Promise based, providing a cleaner and more concise syntax.
If you are interested in thinking about the future of Node, we recommend checking out The next-10 group. They are doing some great work thinking about the strategic direction for the next 10 years of Node.js. Their technical priorities are:
Modern HTTP, WebAssembly, and Types.
ECMAScript modules and Observability
_OpenJS Collaborator Summit 2022
But now I’m sure you want to get into the changes in v18. What has improved, and what are the new features? That’s what you’re here for 😉. So let us explain 👇
Hydrogen. What is it?
The codename for this release is ‘Hydrogen’. Support for Node.js 18 will last until April 2025. The name comes from the periodic table, and they have been used in alphabetical order (Argon, Boron, Carbon, Dubnium, Erbium…) 🤓 Read more in StackOverflow.
According to the Node.js blog, the “LTS version guarantees that the critical bugs will be fixed for a total of 30 months and Production applications should only use Active LTS, or Maintenance LTS releases”. – https://nodejs.dev/en/about/releases/
In short, it focuses on stability and being a more reliable application after allowing a reasonable time to receive feedback from the community and testing its implementation at any scale.
_Nodejs Releases Screenshot 2022
How do I know what version of Node and LTS I have?
You can easily do it by typing in your console:
$ node –version
Run the following to retrieve the name of the LTS release you are using:
$ node -p process.release.lts
_Note: _ The previous property only exists if the release is an LTS. Otherwise, it returns nothing.
If you want to be aware of the release planning in the Node.js community, you can check here: Node.js Release Schedule.
What’s new in Node.js 18?
Contributors are constantly working to improve the runtime, introduce more features, and improve developer experience and usability. Today as the worldwide community uses JS for developing API-driven web applications and serverless cloud development, the changes in this new LTS version are important to understand.
In honor of the number 11 (__#funfact__ Undici means ‘eleven’ in Italian), we decided to make our top 11 Node.js 18 features:
🧪- – watch
🧪 OpenSSL 3 Support
🧪 node:test module
Prefix-only core Modules
🧪 Web Streams API
Other Global APIs: Blob and BrodcastChannel.
V8 Version 10.1
Toolchain and Compiler Upgrades
The idea of this blog post is to relevel the functionalities one by one, so let’s start:
Feature 1: Native Fetch API in Node.js 18
Using –watch, your application will automatically restart when an imported file is changed. Just like nodemon. And you can use –watch-path to specify which path should be observed.
Also, these flags cannot be combined with –check, –eval, –interactive, or when used in REPL (read–eval–print loop) mode. It just won’t work.
You can now use Node Watch index on your file name to start watching your files without having to install anything.
Feature 3: OpenSSL 3 Support
OpenSSL is an open-source implementation of, among other things, SSL and TLS protocols for securing communication.
One key feature of OpenSSL 3.0 is the new FIPS (Federal Information Processing Standards) module. FIPS is a set of US government requirements for governing cryptographic usage in the public sector.
More information is available in the OpenSSL3 blog post.
Feature 4: The Experimental node:test
import test from node:test
This module is only available under the node:scheme.
Read more in Node.js Docs
This test runner is still in development and is not meant to replace other complete alternatives such as Jest or Mocha, but it provides a quick way to execute a test suite without additional third-party libraries. The test runner supports features like subtests, test skipping, callback tests, etc.
node:test and –test
The following is an example of how to use the new test runner.
More information may be found in the Node.js API docs.
Feature 5: Prefix-only core Modules
A new way to ‘import’ modules that leverages a ‘node:’ prefix, which makes it immediately evident that the modules are from Node.js core
Feature 6: Experimental Web Streams API
Methods available are as follows,
Feature 7: Other Global APIs
Feature 8: V8 Version 10.1
Node.js runs with the V8 engine from the Chromium open-source browser. This engine has been upgraded to version 10.1, which is part of the recent update in Chromium 101.
New array methods for finding the last element and index of an array. Array methods findLast and findLastIndex are now available.
Internationalization support: Intl.Locale and the Intl.supportedValuesOf functions.
Improving the performance of class fields and private class methods.
The data format of the v8.serialize function has changed (No compatible with earlier versions of Node.js.)
Keep an eye out here.
Feature 9: Toolchain and Compiler Upgrades
Node.js always provides pre-built binaries for various platforms. For every latest release, toolchains are evaluated and elevated whenever required. Node.js provides pre-built binaries for several different platforms. For each major release, the minimum toolchains are assessed and raised where appropriate.
Pre-built binaries for Linux are now built on Red Hat Enterprise Linux (RHEL) 8 and are compatible with Linux distributions based on Glibc 2.28 or later, for example, Debian 10, RHEL 8, Ubuntu 20.04.
Pre-built binaries for macOS now require macOS 10.15 or later.
For AIX, the minimum supported architecture has been raised from Power 7 to Power 8.
Note: Build-time user-land snapshot(Experimental)
Users can build a Node.js binary with a custom V8 startup using the
–-node-snapshot-main flag of the configure script.
Feature 10: HTTP Timeouts
The http.server timeouts have changed:
headersTimeout (the time allowed for an HTTP request header to be parsed) is set to 60000 milliseconds (60 seconds).
requestTimeout (the timeout used for an HTTP request) is set to 300000 milliseconds (5 minutes) by default.
Feature 11: Undici Library in Node.js
Undici is an official Node team library, although it’s more like an HTTP 1.1 full-fledged client designed from the ground up in Node.js.
Keep alive by default.
Can follow redirected (opt-in)
The project undoubtedly has some great challenges in the near future to continue growing and maintaining its leading position in the ecosystem. These are some of the upcoming features. Most of them are experimental; without being the only ones to discuss, there is much work and proposals from an active community such as the Node.js Community.
Default DNS resolution
ECMAScript modules improvements
Improved support for AbortController and AbortSignal
Updated Platform Support
Direct Network Imports
Build-time user-land snapshot
Support for JSON Import Assertions
Unflagging of JSON modules (experimental)
Support for HTTPS and HTTP imports
You can check the full changelog here.
Node.js 12 will go End-of-Life in April 2022.
Node.js 14 (LTS) or Node.js 16 (LTS) or Later Node.js 18 will be LTS.
Node.js 18 will be promoted to Long-term Support (LTS) in October 2022 (NOW).
After being promoted to LTS, Node.js 18 will be supported until April 2025.
Moving to the LTS version is the best decision for you to include the following improvements in your development workflow:
FetchAPI and Web Streams
V8: New advanced features, array methods, improvements, and enhancements.
Test runner without the need for third-party packages.
Deprecated APIs: Check the list here
Enhancement in Intl.Locale API.
Performance improvement in both class fields and private class methods.
To migrate your version of Node, follow these steps:
For Linux and Mac users, follow these commands to upgrade to the latest version of Node. The module n makes version management easy:
npm install n -g
For the latest stable version:
For the latest version:
Visit the Node.js download page to install the new version of Node.js.
$ nvm install 18.12.0
And thank you to all of Node.js project contributors. Our complete admiration and support for such incredible work 💪.
NodeSource Node.js Binary Distributions
NodeSource, from the beginning, was created with a great commitment to the developers’ community, which is why it has provided documentation for using the NodeSource Node.js Binary Distributions via .rpm, .deb as well as their setup and support scripts.
If you are looking for NodeSource’s Enterprise-grade Node.js platform, N|Solid, please visit https://downloads.nodesource.com/, and for detailed information on installing and using N|Solid, please refer to the N|Solid User Guide.
We are also aware that as a start-up, you want ‘Enterprise-grade’ at a startup price, this is why we extend our product to small and medium-sized companies, startups, and non-profit organizations with N|Solid SaaS.
Useful Links / References
You can upgrade to NodeJS v18 using the official download link
New Node.js features bring a global fetch API & test runner. Check out the Node version 16-18 report