From 8bab38e87c43b46f7ba721b03781d968ea08006e Mon Sep 17 00:00:00 2001 From: Bharat Middha <5100938+bmiddha@users.noreply.github.com> Date: Mon, 17 Aug 2026 17:37:55 -0700 Subject: [PATCH 1/3] build: add Node.js 26 support Node 26 exposes experimental Web Storage globals that cause Jest warnings, so CI disables the feature for Node 26 jobs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14 --- .github/workflows/ci.yml | 12 ++++++++++++ .../@microsoft/rush/node-26_2026-08-17-12-00.json | 10 ++++++++++ .../azure-pipelines/templates/install-node.yaml | 2 +- libraries/rush-lib/src/logic/NodeJsCompatibility.ts | 2 +- rush.json | 2 +- 5 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0932cb45c3..41c7e22d0c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,9 +29,16 @@ jobs: - NodeVersion: 24.11.x NodeVersionDisplayName: 24 OS: ubuntu-latest + # TODO: Remove when the Windows+Node 24 branch policy is removed - NodeVersion: 24.11.x NodeVersionDisplayName: 24 OS: windows-latest + - NodeVersion: 26.7.x + NodeVersionDisplayName: 26 + OS: ubuntu-latest + - NodeVersion: 26.7.x + NodeVersionDisplayName: 26 + OS: windows-latest name: Node.js v${{ matrix.NodeVersionDisplayName }} (${{ matrix.OS }}) runs-on: ${{ matrix.OS }} env: @@ -65,6 +72,11 @@ jobs: with: node-version: ${{ matrix.NodeVersion }} + - name: Disable experimental web storage + if: matrix.NodeVersionDisplayName == 26 + shell: pwsh + run: Add-Content -Path $env:GITHUB_ENV -Value 'NODE_OPTIONS=--no-experimental-webstorage' + - name: Verify Change Logs run: node common/scripts/install-run-rush.js change --verify working-directory: repo-a diff --git a/common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json b/common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json new file mode 100644 index 00000000000..dc5b3d23a46 --- /dev/null +++ b/common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Add support for Node 26.", + "type": "none" + } + ], + "packageName": "@microsoft/rush" +} diff --git a/common/config/azure-pipelines/templates/install-node.yaml b/common/config/azure-pipelines/templates/install-node.yaml index c7f782a991c..a2ff74d718d 100644 --- a/common/config/azure-pipelines/templates/install-node.yaml +++ b/common/config/azure-pipelines/templates/install-node.yaml @@ -1,7 +1,7 @@ parameters: - name: NodeMajorVersion type: number - default: 22 + default: 24 steps: - task: NodeTool@0 diff --git a/libraries/rush-lib/src/logic/NodeJsCompatibility.ts b/libraries/rush-lib/src/logic/NodeJsCompatibility.ts index b39d4a954b1..d2f579be3de 100644 --- a/libraries/rush-lib/src/logic/NodeJsCompatibility.ts +++ b/libraries/rush-lib/src/logic/NodeJsCompatibility.ts @@ -17,7 +17,7 @@ import { RushConstants } from './RushConstants'; * LTS schedule: https://nodejs.org/en/about/releases/ * LTS versions: https://nodejs.org/en/download/releases/ */ -const UPCOMING_NODE_LTS_VERSION: number = 24; +const UPCOMING_NODE_LTS_VERSION: number = 26; const nodeVersion: string = process.versions.node; const nodeMajorVersion: number = semver.major(nodeVersion); diff --git a/rush.json b/rush.json index 01ad72ee743..4b5d676444e 100644 --- a/rush.json +++ b/rush.json @@ -42,7 +42,7 @@ * LTS schedule: https://nodejs.org/en/about/releases/ * LTS versions: https://nodejs.org/en/download/releases/ */ - "nodeSupportedVersionRange": ">=18.15.0 <19.0.0 || >=20.9.0 <21.0.0 || >=22.12.0 <23.0.0 || >=24.11.1 <25.0.0", + "nodeSupportedVersionRange": ">=18.15.0 <19.0.0 || >=20.9.0 <21.0.0 || >=22.12.0 <23.0.0 || >=24.11.1 <25.0.0 || >=26.7.0 <27.0.0", /** * If the version check above fails, Rush will display a message showing the current From 90cd73c3418e2d1455b9d63b376b921fa552e179 Mon Sep 17 00:00:00 2001 From: Bharat Middha <5100938+bmiddha@users.noreply.github.com> Date: Mon, 17 Aug 2026 17:58:48 -0700 Subject: [PATCH 2/3] ci: scope Node 26 options to test steps GitHub blocks NODE_OPTIONS updates through GITHUB_ENV. Set the flag directly on Jest-running steps so child processes inherit it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8ebd5bf2-c44b-42d5-be25-e7936d4b0a14 --- .github/workflows/ci.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41c7e22d0c7..8a23acade6f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,11 +72,6 @@ jobs: with: node-version: ${{ matrix.NodeVersion }} - - name: Disable experimental web storage - if: matrix.NodeVersionDisplayName == 26 - shell: pwsh - run: Add-Content -Path $env:GITHUB_ENV -Value 'NODE_OPTIONS=--no-experimental-webstorage' - - name: Verify Change Logs run: node common/scripts/install-run-rush.js change --verify working-directory: repo-a @@ -93,6 +88,8 @@ jobs: - name: Rush retest (install-run-rush) run: node common/scripts/install-run-rush.js retest --verbose --production working-directory: repo-a + env: + NODE_OPTIONS: ${{ matrix.NodeVersionDisplayName == 26 && '--no-experimental-webstorage' || '' }} - name: Run package manager integration tests run: npm run test @@ -129,7 +126,11 @@ jobs: - name: Rush test (rush-lib) run: node ${{ github.workspace }}/repo-a/apps/rush/lib-commonjs/start-dev.js test --verbose --production --timeline working-directory: repo-b + env: + NODE_OPTIONS: ${{ matrix.NodeVersionDisplayName == 26 && '--no-experimental-webstorage' || '' }} - name: Rush test (rush-lib) again to verify build cache hits run: node ${{ github.workspace }}/repo-a/apps/rush/lib-commonjs/start-dev.js test --verbose --production --timeline working-directory: repo-b + env: + NODE_OPTIONS: ${{ matrix.NodeVersionDisplayName == 26 && '--no-experimental-webstorage' || '' }} From a9563de9b9c3d7ecc0194f220fca51e131b5dc37 Mon Sep 17 00:00:00 2001 From: Bharat Middha <5100938+bmiddha@users.noreply.github.com> Date: Mon, 17 Aug 2026 19:26:22 -0700 Subject: [PATCH 3/3] Apply suggestion from @bmiddha --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d7ca282f671..e0b12e9868c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,6 @@ jobs: - NodeVersion: 24.11.x NodeVersionDisplayName: 24 OS: ubuntu-latest - # TODO: Remove when the Windows+Node 24 branch policy is removed - NodeVersion: 24.11.x NodeVersionDisplayName: 24 OS: windows-latest