Skip to content

build!: support Node.js 22, 24, and 26 - #1071

Open
Ramses Sanchez-Hernandez (ramsessanchez) wants to merge 4 commits into
mainfrom
ramsessanchez-node-js-support
Open

Ramses Sanchez-Hernandez (ramsessanchez) wants to merge 4 commits into
mainfrom
ramsessanchez-node-js-support

Conversation

@ramsessanchez

@ramsessanchez Ramses Sanchez-Hernandez (ramsessanchez) commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

A similar PR may already be submitted! Please search among the Pull request before creating one.

Thanks for submitting a pull request! Please provide enough information so that others can review your pull request.

NOTE: PR's will be accepted only in case of appropriate information is provided below

Summary

Declare support for exactly Node.js 22.x, 24.x, and 26.x.

  • Update the GitHub Actions build matrix from [20.x, 22.x] to [22.x, 24.x, 26.x].
  • Move the Azure daily build to Node.js 22.x; the release pipeline already uses 22.x and remains unchanged.
  • Add engines.node: "22.x || 24.x || 26.x" to the root and all 69 workspace package manifests, including the private test package, and synchronize the corresponding lockfile engine metadata.
  • Document the supported runtimes in the main README, package README template, and contributor prerequisites.
  • Restore automatic, blocking Graph integration tests after renewal of the test tenant, preserving the original client-secret availability gate.

No dependency versions, generated SDK code, TypeScript targets, or publishing behavior are changed.

Motivation

Node.js 20 remains in the CI matrix and Azure daily build, while the packages do not declare a supported Node.js range. Align package compatibility metadata, automated coverage, and documentation with the requested Node.js 22, 24, and 26 support policy.

This intentionally excludes Node.js 20, odd-numbered majors, and unlisted future majors. npm's default engine-warning behavior is unchanged; this does not introduce engine-strict or runtime guards.

The initial CI run installed and compiled successfully on all three supported runtimes, but Graph integration tests failed with AADSTS5000229 because the test tenant expired. The tenant has now been renewed, so the temporary opt-in and non-blocking behavior has been reverted. Tests run automatically when the configured client secret is available, and failures block CI.

Test plan

Completed local validation:

Node.js runtime Exact command Result
22.22.2 npm ci --no-audit --no-fund Passed
22.22.2 npm run build Passed; all 69 workspaces
24.14.1 npm ci --no-audit --no-fund Passed
24.14.1 npm run build Passed; all 69 workspaces
26.12.1 node $npmCli ci --no-audit --no-fund Passed
26.12.1 node $npmCli run build Passed; all 69 workspaces
22.22.2 git diff --check Passed

For the Node.js 26 commands, PATH selected Node.js 26.12.1 and $npmCli was set to "$env:NVM_HOME\v22.22.2\node_modules\npm\bin\npm-cli.js", reusing npm 10.9.7 without changing the machine-wide Node.js selection.

Additional local assertions passed under all three runtimes: all 70 first-party manifests have the exact agreed engine range and matching lockfile metadata; supported majors are accepted and unsupported majors are excluded; third-party lockfile metadata and dependencies are unchanged; CI runtime selectors and documentation are consistent.

For the revert of the temporary optional-test behavior, node - with inline assertions passed: the workflow and contributor documentation exactly match their versions before the optional-test change, the Node.js 22/24/26 matrix is preserved, and tests retain the original secret gate without continue-on-error or a manual opt-in input. git diff --check -- .github\workflows\build.yml CONTRIBUTING.md passed.

In the initial remote CI run, npm ci and npm run build passed on Node.js 22, 24, and 26. npm run test failed on all three due to the expired test tenant. The tenant has since been renewed; the original automatic, blocking test behavior has been restored.

npm test was not run locally because the required Microsoft Graph integration-test environment variables (TENANT_ID, CLIENT_ID, CLIENT_SECRET, and USER_ID) are unavailable. No new standalone test files were added.

Closing issues

N/A; no linked issue.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • I have read the CONTRIBUTING document.
  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

BREAKING CHANGE: Declare support for Node.js 22.x, 24.x, and 26.x only; Node.js 20 and other unlisted major versions are no longer supported.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 24155334-621f-447c-988e-c1e5c9732fdd
Microsoft Graph DevX Tooling and others added 2 commits October 23, 2026 16:39
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 24155334-621f-447c-988e-c1e5c9732fdd
Revert optional, non-blocking integration tests now that the test tenant has been renewed. Preserve the existing client-secret availability gate.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 24155334-621f-447c-988e-c1e5c9732fdd

This branch was successfully deployed

1 active deployment
build_test — f12b4942 Deployed Oct 27, 2026 by ramsessanchez via build (26.x) #2076
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant