From fa2eba0e0f6dbcc9a16b2c820939f3edcc487a5e Mon Sep 17 00:00:00 2001 From: Ulisses Ferreira Date: Mon, 7 Sep 2026 14:07:54 +0100 Subject: [PATCH] chore: drop Node 20 and target ES2023 - Node 18 and 20 are EOL: `engines.node` is now `^22.14.0 || ^24` in the root and all packages, enforced by the Yarn constraints, and the CI test matrix runs on 22.x and 24.x only. - Shared TypeScript `target` and `lib` settings are bumped from ES2020 to ES2023, matching the Snap packages, which already target ES2023. ES2023 adds no syntax over ES2022, and all ES2023 library features are supported on Node 22 and 24. --- .github/workflows/lint-build-test.yml | 4 ++-- package.json | 2 +- packages/bitcoin-wallet-snap/package.json | 2 +- packages/bitcoin-wallet-snap/snap.manifest.json | 2 +- packages/snap-networks-utils/package.json | 2 +- packages/solana-wallet-snap/package.json | 2 +- packages/solana-wallet-snap/snap.manifest.json | 2 +- packages/stellar-wallet-snap/package.json | 2 +- packages/stellar-wallet-snap/snap.manifest.json | 2 +- packages/tron-wallet-snap/package.json | 2 +- packages/tron-wallet-snap/snap.manifest.json | 2 +- tsconfig.base.json | 4 ++-- tsconfig.json | 2 +- tsconfig.scripts.json | 2 +- yarn.config.cjs | 5 +++-- 15 files changed, 19 insertions(+), 18 deletions(-) diff --git a/.github/workflows/lint-build-test.yml b/.github/workflows/lint-build-test.yml index 9d0dea485..b26f378f7 100644 --- a/.github/workflows/lint-build-test.yml +++ b/.github/workflows/lint-build-test.yml @@ -89,7 +89,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [20.x, 22.x, 24.x] + node-version: [22.x, 24.x] outputs: child-workspace-package-names: ${{ steps.workspace-package-names.outputs.child-workspace-package-names }} child-workspace-package-directories: ${{ steps.workspace-package-names.outputs.child-workspace-package-directories }} @@ -216,7 +216,7 @@ jobs: needs: [prepare, build] strategy: matrix: - node-version: [20.x, 22.x] + node-version: [22.x, 24.x] package-name: ${{ fromJson(needs.prepare.outputs.child-workspace-package-names) }} package-directory: ${{ fromJson(needs.prepare.outputs.child-workspace-package-directories) }} steps: diff --git a/package.json b/package.json index d11c76d81..509bd36e1 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "ws@7.4.6": "^7.5.10" }, "engines": { - "node": ">=20" + "node": "^22.14.0 || ^24" }, "packageManager": "yarn@4.17.1", "lavamoat": { diff --git a/packages/bitcoin-wallet-snap/package.json b/packages/bitcoin-wallet-snap/package.json index 76370babb..e7abec7fa 100644 --- a/packages/bitcoin-wallet-snap/package.json +++ b/packages/bitcoin-wallet-snap/package.json @@ -74,6 +74,6 @@ "wif": "^5.0.0" }, "engines": { - "node": ">=20" + "node": "^22.14.0 || ^24" } } diff --git a/packages/bitcoin-wallet-snap/snap.manifest.json b/packages/bitcoin-wallet-snap/snap.manifest.json index e89c3a658..0bc152ed4 100644 --- a/packages/bitcoin-wallet-snap/snap.manifest.json +++ b/packages/bitcoin-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "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/MetaMask/internal-snaps.git" }, "source": { - "shasum": "Pd1NN2k0m87Txbpt+rzuEjoUWWynDerzz4qR4Wto+nc=", + "shasum": "Toy0lgo6eUTHc9W2Obj9JZNRm3uEJzkeD2E8NmG+W44=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/snap-networks-utils/package.json b/packages/snap-networks-utils/package.json index 5fc829e8a..636a0a6ac 100644 --- a/packages/snap-networks-utils/package.json +++ b/packages/snap-networks-utils/package.json @@ -94,6 +94,6 @@ "typescript": "~5.8.3" }, "engines": { - "node": ">=20" + "node": "^22.14.0 || ^24" } } diff --git a/packages/solana-wallet-snap/package.json b/packages/solana-wallet-snap/package.json index 0e5795562..236111688 100644 --- a/packages/solana-wallet-snap/package.json +++ b/packages/solana-wallet-snap/package.json @@ -89,6 +89,6 @@ "typescript": "~5.8.3" }, "engines": { - "node": ">=20" + "node": "^22.14.0 || ^24" } } diff --git a/packages/solana-wallet-snap/snap.manifest.json b/packages/solana-wallet-snap/snap.manifest.json index 21ada2cbf..b78f854a0 100644 --- a/packages/solana-wallet-snap/snap.manifest.json +++ b/packages/solana-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "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/MetaMask/internal-snaps.git" }, "source": { - "shasum": "3XId1IkqlIty92kiBLHbDxIv1RY8AnZiGvOiTOnTaJI=", + "shasum": "Szf70/ghTVTeyeEcPUPnHGKxE+tWaZBEZJuR4Kh+gks=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/stellar-wallet-snap/package.json b/packages/stellar-wallet-snap/package.json index 2d0f08c9a..1ec585aa8 100644 --- a/packages/stellar-wallet-snap/package.json +++ b/packages/stellar-wallet-snap/package.json @@ -72,6 +72,6 @@ "ts-jest": "^29.4.1" }, "engines": { - "node": ">=20" + "node": "^22.14.0 || ^24" } } diff --git a/packages/stellar-wallet-snap/snap.manifest.json b/packages/stellar-wallet-snap/snap.manifest.json index 0fb79b5d4..81e9fa822 100644 --- a/packages/stellar-wallet-snap/snap.manifest.json +++ b/packages/stellar-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "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/MetaMask/internal-snaps.git" }, "source": { - "shasum": "Cgwhcxj5mugH3EzB2dR6BDqtc2AnL+RSCkUEbjgAwic=", + "shasum": "df2jwrVqYLs741TWeyLYKABatgBkFCEDWJdwpnNwiXw=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/tron-wallet-snap/package.json b/packages/tron-wallet-snap/package.json index bf7ae2124..e97493133 100644 --- a/packages/tron-wallet-snap/package.json +++ b/packages/tron-wallet-snap/package.json @@ -75,6 +75,6 @@ "typescript": "~5.8.3" }, "engines": { - "node": ">=20" + "node": "^22.14.0 || ^24" } } diff --git a/packages/tron-wallet-snap/snap.manifest.json b/packages/tron-wallet-snap/snap.manifest.json index feeaa72ab..8e5f3d2c8 100644 --- a/packages/tron-wallet-snap/snap.manifest.json +++ b/packages/tron-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "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/MetaMask/internal-snaps.git" }, "source": { - "shasum": "iF+9rnAdk21FSl4s0l1iE9+oTvqg8mAy987x6FDUTvo=", + "shasum": "nbBLLJNTo42N6FSp8TuKDy1SlsTrBCYHXEvSk8dHIQA=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/tsconfig.base.json b/tsconfig.base.json index af0dfe8c2..498f0516c 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,10 +15,10 @@ "compilerOptions": { "esModuleInterop": true, "isolatedModules": true, - "lib": ["ES2020", "DOM"], + "lib": ["ES2023", "DOM"], "module": "Node16", "moduleResolution": "Node16", "strict": true, - "target": "ES2020" + "target": "ES2023" } } diff --git a/tsconfig.json b/tsconfig.json index 724f194ed..1c91d592f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,7 @@ "forceConsistentCasingInFileNames": true, "jsx": "react-jsx", "jsxImportSource": "@metamask/snaps-sdk", - "lib": ["ES2020"], + "lib": ["ES2023"], "noEmit": true, "noErrorTruncation": true, "noUncheckedIndexedAccess": true, diff --git a/tsconfig.scripts.json b/tsconfig.scripts.json index 52fbb82ee..49878b4c9 100644 --- a/tsconfig.scripts.json +++ b/tsconfig.scripts.json @@ -10,7 +10,7 @@ "baseUrl": "./", "exactOptionalPropertyTypes": true, "forceConsistentCasingInFileNames": true, - "lib": ["ES2020"], + "lib": ["ES2023"], "noEmit": true, "noErrorTruncation": true, "noUncheckedIndexedAccess": true diff --git a/yarn.config.cjs b/yarn.config.cjs index 2b1f91768..e4b0ed1ad 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -286,8 +286,9 @@ module.exports = defineConfig({ expectWorkspaceField(workspace, 'packageManager', 'yarn@4.17.1'); } - // All packages must specify a minimum Node.js version of 20. - expectWorkspaceField(workspace, 'engines.node', '>=20'); + // All packages must specify Node.js ^22.14.0 or ^24 as their minimum + // supported version. + expectWorkspaceField(workspace, 'engines.node', '^22.14.0 || ^24'); // All non-root public packages should be published to the NPM registry; // all non-root private packages should not.