Skip to content

chore: update Node.js to 26.0.0#11472

Merged
zkochan merged 2 commits into
mainfrom
node26
May 5, 2026
Merged

chore: update Node.js to 26.0.0#11472
zkochan merged 2 commits into
mainfrom
node26

Conversation

@zkochan

@zkochan zkochan commented May 5, 2026

Copy link
Copy Markdown
Member

Summary

  • Bump CI test matrix from Node.js 25.0.0 to 26.0.0 (.github/workflows/ci.yml)
  • Update release and benchmark workflows to install Node.js 26.0.0
  • Bump embedded runtime in @pnpm/exe build-artifacts script to node@26.0.0

Test plan

  • CI matrix passes on 26.0.0
  • @pnpm/exe build-artifacts succeeds once unofficial-builds.nodejs.org publishes the v26.0.0 musl tarballs (currently only headers are available — musl builds typically appear within hours of an official release)

Summary by CodeRabbit

Release Notes

  • Chores
    • Upgraded Node.js runtime to version 26.0.0 across build pipelines, CI workflows, and release processes.
    • Enhanced source map handling during build transformations to improve debugging capabilities.
    • Updated development tooling dependencies to support improved type-stripping functionality.

@coderabbitai

coderabbitai Bot commented May 5, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The PR updates Node.js runtime from version 25.x to 26.0.0 across CI workflows and build scripts. Additionally, the Jest TypeScript transformer is refactored to use amaro's WASM-backed type stripping with inline source map support, requiring a new dependency addition.

Changes

Node.js Runtime Version Upgrade

Layer / File(s) Summary
Workflow Configuration
.github/workflows/benchmark.yml, .github/workflows/release.yml
Node.js setup steps pinned to 26.0.0 (from 25.7.0 and 25.6.1 respectively).
CI Matrix Configuration
.github/workflows/ci.yml
Test matrix and Windows job exclusion logic updated to use Node.js 26.0.0 instead of 25.0.0.
Build Script Configuration
pnpm/artifacts/exe/scripts/build-artifacts.ts
EMBEDDED_RUNTIME constant updated from node@25.9.0 to node@26.0.0 for pack-app.

Jest TypeScript Transform Enhancement

Layer / File(s) Summary
Dependency Catalog
pnpm-workspace.yaml, __utils__/jest-config/package.json
Added amaro version ^1.1.9 to workspace catalog and jest-config dependencies.
Transform Implementation
__utils__/jest-config/jest.transform.js
Replaced Node's stripTypeScriptTypes with amaro's WASM transformSync for type stripping. Added inline source map generation by base64-encoding and appending sourceMappingURL comment when map is available. Preserved existing DisposableStack feature detection and babel fallback.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • pnpm/pnpm#11455: Both PRs modify pnpm/artifacts/exe/scripts/build-artifacts.ts; this PR updates the embedded Node runtime version while the related PR adjusts target platform logic.

Poem

🐰 From twenty-five to twenty-six we hop,

New amaro brings the source maps on top,

Jest transforms now with WASM's grace,

Hopping forward at a swifter pace! 🚀

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the primary change across multiple files: updating Node.js from version 25.x to 26.0.0 in CI workflows and build artifacts.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch node26

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Comment @coderabbitai help to get the list of available commands and usage tips.

Node.js v26 removed the `transform` mode and `sourceMap` option from
`module.stripTypeScriptTypes`. Switch the Jest transform to call
`amaro.transformSync` directly (the same wasm transformer Node.js wraps)
so we keep inline source maps for tests.
jdalton added a commit to SocketDev/socket-btm that referenced this pull request May 5, 2026
Node 26.0.0 GA shipped May 2026. pnpm 11.0.6 (May 2026) is the
matching pnpm release with the @pnpm/exe binaries built against
Node 25.x; pnpm's own Node 26 transition is in flight upstream
(pnpm/pnpm#11472, open).

Changes:

- `.gitmodules`: bump comment to `# node-26.0.0 sha256:db0b0db9...`
  (the source-tarball sha256 from nodejs.org/dist/v26.0.0/SHASUMS256).
- `xport.json`: pinned_tag v25.9.0 → v26.0.0,
  pinned_sha 9f5a2c92... → 1eaf8a9b... (the v26.0.0 commit).
- Submodule itself moved to 1eaf8a9bd9b (Node v26.0.0).
- `package.json` engines.node: >=18.20.8 → >=26.0.0,
  engines.pnpm: >=11.0.0 → >=11.0.6,
  packageManager: pnpm@11.0.3 → pnpm@11.0.6+sha512.97f906e1...
  (corepack hex form, not SRI base64 — RFC 2018 spec mandates hex).

The packageManager field now carries integrity for corepack to
verify the downloaded pnpm tarball against. Different encoding from
external-tools.json's SRI form because corepack's parser only
accepts hex; this is documented in the canonical CLAUDE.md.
@zkochan zkochan marked this pull request as ready for review May 5, 2026 20:11
Copilot AI review requested due to automatic review settings May 5, 2026 20:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the repository’s Node.js version targets to 26.0.0 for CI/release workflows and the @pnpm/exe embedded runtime, and adjusts Jest’s TypeScript-stripping transformer to stay compatible with Node 26’s stripTypeScriptTypes changes.

Changes:

  • Bump GitHub Actions CI matrix and release/benchmark workflows to use Node.js 26.0.0.
  • Update @pnpm/exe artifact build script to embed node@26.0.0.
  • Switch Jest transform type-stripping to use amaro and add it to the workspace catalog/lockfile.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
pnpm/artifacts/exe/scripts/build-artifacts.ts Updates the embedded SEA runtime to node@26.0.0.
pnpm-workspace.yaml Adds amaro to the workspace catalog.
pnpm-lock.yaml Records amaro@1.1.9 in catalogs/importers/packages/snapshots.
.github/workflows/release.yml Updates release workflow Node version to 26.0.0.
.github/workflows/ci.yml Updates CI matrix to test Node 26.0.0 instead of 25.0.0.
.github/workflows/benchmark.yml Updates benchmark workflow Node version to 26.0.0.
__utils__/jest-config/package.json Adds amaro dependency for the Jest transformer.
__utils__/jest-config/jest.transform.js Replaces module.stripTypeScriptTypes usage with amaro to preserve inline source maps.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +11 to 21
// Node.js v26 removed the `transform` mode and `sourceMap` option from
// `module.stripTypeScriptTypes`, so we call into `amaro` (the same
// wasm-backed transformer Node.js uses internally) directly. `transform`
// mode is required to keep inline source maps — without them, interactive
// debuggers can't map type-stripped test files back to their on-disk
// location. For background, see https://github.com/pnpm/pnpm/pull/11024.
const { code: stripped, map } = stripTypes(sourceText, {
mode: 'transform',
sourceMap: true,
sourceUrl: sourcePath
filename: sourcePath,
})
@zkochan zkochan merged commit f79f054 into main May 5, 2026
16 of 17 checks passed
@zkochan zkochan deleted the node26 branch May 5, 2026 20:18
zkochan added a commit that referenced this pull request May 6, 2026
* chore: update Node.js to 26.0.0

* fix(jest-config): use amaro for type stripping on Node.js 26

Node.js v26 removed the `transform` mode and `sourceMap` option from
`module.stripTypeScriptTypes`. Switch the Jest transform to call
`amaro.transformSync` directly (the same wasm transformer Node.js wraps)
so we keep inline source maps for tests.
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.

2 participants