We are highly excited to declare that Node.js 14 was launched on April 21, 2020. This latest version brings several features and improvements that must excite developers, incorporating the capacity of storing data through an online request, and in-built diagnostic reporting.
In this release, the highlights incorporate an upgrade of V8, enhanced diagnostics, modifications of the Streams APIs, an experimental Async Local Storage API, the reduction of a few long disapproved APIs, and the reduction of the Experimental Modules warning.
Node.js 14 has replaced Node.js 13. According to the release schedule by GitHub, for the next six months, Node.js 14 will be the current release. It will be further promoted to LTS (Long-Term Support) in October 2020.
Hence, corporate users need to wait for upgrading their product development until October when Node.js will be promoted to Long-Term Support. Nevertheless, it’s the perfect time to start examining apps with Node.js 14 and check out its newest features!
The Exciting Features of Node.js 14
Before delving into the highlighted features for this release, you need to note that the latest features added to the great flow rapidly into the present launch. This implies that essential features become accessible in small releases without many demonstrations.
Let’s highlight some exciting features of the Node.js 14:
1. Experimental Async Local Storage API
Node.js developers much appreciate this feature. A high level experimental AsyncLocalStorage API will make it simpler for apps for reaching constancy as it does not expose more internals.
AsyncLocalStorage is utilized for making an asynchronous state inside promise chains and callbacks. It enables data storage throughout the lifetime of an online request. In other languages, it is the same as thread-local storage.
Albeit you may discover other npm modules that offer the same performance, using different packages comprehensively was very difficult. Due to this, it was determined that an API must be given.
2. Diagnostic Report Gets Stability
In Node.js 12, the diagnostic report was added as an experimental feature; however, in Node.js 14, it will be launched as a stable feature.
This is a vital step in the continuous work inside the project to enhance and make the diagnostics accessible while using Node.js and the simplicity with which you can use them, with much of this job is accelerated by the Node.js Diagnostics Working Group.
This feature enables you to create a report on-demand or when particular events occur. This report comprises useful data to help diagnose issues in app development incorporating unwanted errors, high CPU usage, memory leaks, slow functionality, crashes, and more.
As a constant feature, there will be one less command-line option required to allow Diagnostic reports and it must be simpler for users to allow it in production environments.
3. Experimental Web Assembly System Interface (WASI)
This is another addition in Node.js 14 release. Web Assembly is a growing approach that allows app code for running in several environments with no changes. The experimental web assembly interface is an enabler that permits WASI code to get access to OS kind resources, such as the sockets and file system.
The developers will possibly write and experiment with WASI modules that have this requirement. Like other features, it requires getting sufficient usage that the APIs are in the proper shape and can be maintained.
4. Changes to Streams APIs
This highlight incorporates many modifications labeled as Semantic Versioning major in the Node.js Streams application. These alterations are expected to enhance constancy across the Streams APIs for reducing streamline behaviors and ambiguity across the different parts of Node.js core.
For instance, net.Socket behaves similarly to the stream.Duplex and http.OutgoingMessage is the same as the stream.Writable. A noteworthy modification is that presently the autoDestroy option is defaulted to true and it is making the stream called _destroy always after completion.
Although it is unbelievable that these SemVer major modifications will impact many apps, as they just modify edge cases, if you highly depend on Streams, you should better test while Node.js 14 is the latest release so that it is prepared for when Node.js becomes Long-Term Support in October 2020.
5. V8 Engine Upgraded to Version 8.1
- Intl.DateTimeFormat – This feature enables numberingSystem and calendar options.
- Intl.DisplayNames – It offers the constancy of region, language, and script display names’ translations.
- Nullish Coalescing – It’s a logical operator that will return its right-hand side operand when its left-hand side operand is not defined or null.
- Optional Chaining – It enables accessing a property’s value located deep within a chain of connected things with no requirement of validating expressly that every reference in the chain.
6. Removal of Experimental Modules Warning
Despite the requirement to incorporate the experimental-modules flag was eradicated in Version 13, running EcmaScript Modules in Node.js would still give an outcome as a warning ‘Experimental Warning: The ESM module loader is experimental.’
This warning is no more required in Node.js 14 while using ESM in Node.js. Nevertheless, the application of ESM in Node.js stays experimental. According to the stability index, this feature is not subjected to SemVer rules.
Removal or non-backward compatible alterations may occur in an upcoming release. Users need to be alert while using this feature in a production environment.
Also, note that the ESM application in Node.js is different from the developer experience you might have. Maximum Transpilation workflows support features like JSON modules or optional file extensions that the ESM application in Node.js does not support.
Modules from transpiled environments may need a specific level of refactoring for working in Node.JS. It should be mentioned that many design decisions were created with 2 main targets: Web Compatibility and Spec Compliance.
7. Platform Minimums and New Compiler
Node.js offers pre-built binaries for several platforms. For every prime release, the minimum toolchains are measured and increased where required. This release goes along with all macOS binaries for being compiled on macOS 10.15 (Catalina) with Xcode 11 for assisting package notarization.
Since binaries are still being compiled for assisting the significant compile goals for the release lines, it is not predicted that this will have a bad effect on Node.js users on macOS’ previous versions. The minimum macOS target version has been bumped for Node.js 14 to macOS 10.13 (High Sierra).
For Node.js 14, the minimum GCC level on the Linux based platforms stays at GCC 6; nevertheless, the binaries will be possibly made or released for a few platforms with GCC 8. Moreover, Node.js won’t run on End-of-Life Windows deployments.
For the next six months, although it is in the present stage, Node.js 14 will get the newest features that are contributed to Node.js. This release line is appropriate for the next 6 months for trying out the most recent features, checking out your project’s compatibility with the latest updates of Node.js, and providing feedback so that this release is prepared to move to Long-Term Support in October 2020.