diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cdbe3e79d5..0d583d6eb7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,6 +63,9 @@ jobs: strategy: fail-fast: false matrix: + # 22.x is deprecated but still supported: it stays required until the + # breaking-change release that drops it (first major on/after 2027-04-30). + # See README.md "Node.js Version Support Policy". node-version: [22.x, 24.x, 26.x] experimental: [false] include: diff --git a/CLAUDE.md b/CLAUDE.md index 38b2a7266d..f0e8fa6fd5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -142,4 +142,4 @@ This will generate the necessary boilerplate for a new coin implementation. ## Node.js Version Support -BitGoJS supports Node.js versions 22 and later, including Node.js 26, with NPM >=3.10.10. +BitGoJS supports Node.js versions 22 and later, including Node.js 26, with NPM >=3.10.10. Node.js 22 is deprecated and will be removed from engines.node in the first major release on or after its 2027-04-30 end-of-life; see README.md "Node.js Version Support Policy". diff --git a/DEVELOPERS.md b/DEVELOPERS.md index bc4da4e237..941788b951 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -1,7 +1,7 @@ # Requirements - yarn version 1 (classic) -- Node.js version 22 or later +- Node.js version 22 or later (Node.js 22 is deprecated and support ends with the first major release on or after 2027-04-30; Node.js 24 or 26 recommended) # Installing @@ -186,6 +186,8 @@ Engines should be set to the following: } ``` +Node.js 22 is deprecated; keep `>=22` until the removal release described in the [Node.js Version Support Policy](README.md#nodejs-version-support-policy), then change every package to `>=24` in a single breaking-change commit. + ### `tsconfig.json` There are a few things each module's `tsconfig.json` must do: diff --git a/README.md b/README.md index 093ac80661..e5121b2c64 100644 --- a/README.md +++ b/README.md @@ -56,16 +56,20 @@ BitGoJS currently provides support for the following Node versions per package.j } ``` +## Deprecation notice: Node.js 22 + +Node.js 22 is deprecated as of 2026-10-28, when Node.js 26 entered Active LTS. Node.js 22 remains supported, and required to pass continuous integration, until it reaches end-of-life on 2027-04-30. The first BitGoJS major release on or after 2027-04-30 will remove Node.js 22 from `engines.node` (changing it to `>=24`) and from the continuous integration matrix. Upgrade to Node.js 24 or 26 before then. + We specifically limit our support to these versions of Node, not because this package won't work on other versions, but because these versions tend to be the most widely used in practice. The packages may work correctly on newer or older versions, but only the supported versions below are required to pass continuous integration. We also run one newer Node.js release as a non-blocking early-warning check so incompatibilities are visible before that release becomes supported. As each Node LTS version reaches its end-of-life we will exclude that version from the node engines property of our package's package.json file. Removing a Node version is considered a breaking change and will entail the publishing of a new major version of this package. We will not accept any requests to support an end-of-life version of Node, and any pull requests or issues regarding support for an end-of-life version of Node will be closed. We will accept code that allows this package to run on newer, non-LTS, versions of Node. Furthermore, we will attempt to ensure our own changes work on the latest version of Node. To help in that commitment, our continuous integration setup runs the full test suite on the latest release of the following versions of node: -- `22` (Maintenance LTS) — required to pass +- `22` (Maintenance LTS, deprecated; removal planned for the first major release on or after 2027-04-30) — required to pass - `24` (Maintenance LTS) — required to pass -- `26` (Current) — required to pass +- `26` (Active LTS) — required to pass - `27` nightly (experimental) — non-blocking; a failure posts a warning comment on the pull request -When a new Node.js major becomes supported, add it to the required `node-version` matrix in `.github/workflows/ci.yml` and update the `engines.node` range across all `modules/*/package.json` files if the range does not already include it. Keep exactly one newer release as the non-blocking early-warning check: when Node.js 28 development builds become available, replace the Node.js 27 nightly entry rather than adding another experimental matrix entry. Node.js 26 is required before its Long Term Support (LTS) transition, so its CI check is intentionally blocking already. +When a new Node.js major becomes supported, add it to the required `node-version` matrix in `.github/workflows/ci.yml` and update the `engines.node` range across all `modules/*/package.json` files if the range does not already include it. Keep exactly one newer release as the non-blocking early-warning check: when Node.js 28 development builds become available, replace the Node.js 27 nightly entry rather than adding another experimental matrix entry. When a new Node.js major enters Active LTS, mark the oldest supported LTS as deprecated in this section, keep it in the required matrix, and plan its removal for the first major release on or after its end-of-life date. Removal changes `engines.node` in every package and the generators, drops the version from the CI matrix, and must be committed with a `BREAKING CHANGE:` footer so the release publishes a major version of every package. JavaScript package managers should allow you to install this package with any version of Node, with, at most, a warning if your version of Node does not fall within the range specified by our node engines property. If you encounter issues installing this package on a supported version of Node, please report the issue to us. diff --git a/modules/bitgo/README.md b/modules/bitgo/README.md index ebb9d53ec7..6e112593b1 100644 --- a/modules/bitgo/README.md +++ b/modules/bitgo/README.md @@ -15,7 +15,7 @@ If you have questions or comments about this API, email support@bitgo.com. # Installation -Ensure you're running Node.js version 22 or later, including Node.js 26, and NPM version 10. +Ensure you're running Node.js version 22 or later, including Node.js 26, and NPM version 10. Node.js 22 is deprecated and support will be removed in the first major release on or after 2027-04-30; use Node.js 24 or 26. For setting your Node version, we recommend using `nvm` - the [Node Version Manager](https://github.com/creationix/nvm/blob/master/README.markdown#installation). `npm install --save bitgo` diff --git a/modules/express/README.md b/modules/express/README.md index cad19fe20e..f9c119b0cb 100644 --- a/modules/express/README.md +++ b/modules/express/README.md @@ -125,7 +125,7 @@ For users who are unable to run BitGo Express as a Docker container, we recommen ### Prerequisites -Use Node.js 22 or later. The required continuous integration checks cover Node.js 22, 24, and 26. We recommend using `nvm`, the [Node Version Manager](https://github.com/creationix/nvm/blob/master/README.markdown#installation), for setting your Node.js version. BitGo Express is part of the monorepo, so use `yarn` for local setup. +Use Node.js 22 or later. The required continuous integration checks cover Node.js 22, 24, and 26. Node.js 22 is deprecated and support will be removed in the first major release on or after 2027-04-30. We recommend using `nvm`, the [Node Version Manager](https://github.com/creationix/nvm/blob/master/README.markdown#installation), for setting your Node.js version. BitGo Express is part of the monorepo, so use `yarn` for local setup. ### Cloning the repository and installing dependencies diff --git a/scripts/sdk-coin-generator-v2/core/generator.ts b/scripts/sdk-coin-generator-v2/core/generator.ts index bb4c3ee1b4..0b3dcc696b 100644 --- a/scripts/sdk-coin-generator-v2/core/generator.ts +++ b/scripts/sdk-coin-generator-v2/core/generator.ts @@ -218,6 +218,7 @@ export class Generator { author: 'BitGo SDK Team ', license: 'MIT', engines: { + // Keep in sync with README.md "Node.js Version Support Policy"; Node.js 22 is deprecated but remains in range until the removal major release. node: '>=22', }, repository: {