Jump to Content
Application Development

Google Cloud moves Cloud Client Libraries for Node.js support for version 10 to Maintenance

February 7, 2022
https://storage.googleapis.com/gweb-cloudblog-publish/images/appdev.max-2600x2600.jpg
Benjamin Coe

Developer Programs Engineer

On March 31, 2022, Node.js 10 will be going into maintenance mode for the Google Cloud Node.js SDK. When doing so, libraries will have their major version increased, in accordance with Semantic Versioning.

Motivation

Node.js LTS versions have a 30 month lifecycle, during which time they receive critical bug and security updates:

https://storage.googleapis.com/gweb-cloudblog-publish/images/schedule-01.max-1900x1900.jpg
Image by Node.js. Used with permission.

Many dependencies in the Node.js ecosystem follow this same release timeline, supporting (as a minimum) whatever version of Node.js is currently in maintenance. Supporting end of life runtimes makes it difficult to take critical patches for the dependencies that the Node.js SDK relies on, opening users up to risk.

Node.js 10 went end of life in April 2021. As we’ve been noticing several core dependencies start to require Node.js 12 or later, it’s good practice to do the same. Otherwise, it becomes increasingly difficult to deliver critical security patches—for example, see node-pre-gyp#623.

What to expect from this new major version

The motivation of the major version bump is to make the upgrade process from Node.js 10 to Node.js 12 or later as seamless as possible. You do not need to update your runtime to Node.js 12 until you explicitly update your dependencies. In the new major version, the Google Cloud Node.js SDK updates the following:

  • The engines field to version 12 or later:
    "engines": {"node": ">=12"}

  • Any dependencies that have been pinned, if the dependencies dropped Node.js 10 on a faster schedule.

We do our best to minimize changes caused by upgrades. However, sometimes functional changes are required and appear in the library's GitHub CHANGELOG.

To upgrade your environment from Node.js 10 to Node.js 12 or later, install the newest major version of a client library and deploy your application to a current LTS version of the Node.js runtime.

If you can’t upgrade immediately

Google's client libraries still support legacy versions of Node.js runtimes on a best-efforts basis. However, if a bug is fixed in an external dependency, and the dependency no longer supports the legacy runtime, we will not be able to patch. Given examples like this, we recommend that you update as soon as possible.

Policy going forward

Node.js 12 moves to end of life status in April 2022. As we did with Node.js 8 and 10, we will continue to support Node.js 12 for several months after the end of life date. Going forward, we will aim for a period of 6 months beyond Node.js’ end-of-life date, before dropping support for a runtime version in client libraries. This may vary depending on critical security patches. To minimize update fatigue, we will support Node.js 12 until February 2023..

The engines field represents the minimum version that our SDK supports. It’s in your best interest as an application developer to deploy a Node.js version currently under LTS. Even though we will be supporting Node.js 12 for much of 2022, we strongly recommend you deploy your applications on Node.js 14 or Node.js 16 because these releases are actively supported LTS candidates.


Acknowledgements: thanks to Megan Potter and Eileen Sasaki who provided additional feedback on this post, and helped in developing our version support strategy.

Posted in