Skip to content

chore: require Node ^20.19.0 || >=22.12.0 in engines - #8855

Merged
Sheraff merged 2 commits into
mainfrom
chore/node-engines-require-esm
Nov 3, 2026
Merged

Sheraff merged 2 commits into
mainfrom
chore/node-engines-require-esm

Conversation

@Sheraff

@Sheraff Sheraff commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Split out of #8817 so the big PR can shrink.

Narrows engines.node from >=20.19 to ^20.19.0 || >=22.12.0 in @tanstack/router-cli, @tanstack/router-generator, @tanstack/router-plugin and @tanstack/router-utils, the same four packages and the same range as #8817. This drops Node 21 and Node 22.0–22.11. Those versions don't enable require(esm) by default, and #8817's CommonJS builds use it to load the ESM-only Yuku parser. The maintainer chose to land the requirement before the code that needs it.

Only the engines fields change; the lockfile stays the same. A changeset (minor) is included, and it gives the reason.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Compatibility
    • The router CLI, generator, plugin, and utilities now require Node.js 20.19.x or Node.js 22.12 and later. Node.js 21 and Node.js 22.0–22.11 are no longer supported. Check that your Node.js version meets these requirements before upgrading to releases of these packages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: e32fb19

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 10 packages
Name Type
@tanstack/router-cli Minor
@tanstack/router-generator Minor
@tanstack/router-plugin Minor
@tanstack/router-utils Minor
@tanstack/start-plugin-core Patch
@tanstack/router-vite-plugin Patch
@tanstack/react-start-rsc Patch
@tanstack/react-start Patch
@tanstack/solid-start Patch
@tanstack/vue-start Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

4 package(s) bumped directly, 6 bumped as dependents.

🟨 Minor bumps

Package Version Reason
@tanstack/router-cli 1.167.46 → 1.168.0 Changeset
@tanstack/router-generator 1.167.46 → 1.168.0 Changeset
@tanstack/router-plugin 1.168.48 → 1.169.0 Changeset
@tanstack/router-utils 1.162.4 → 1.163.0 Changeset

🟩 Patch bumps

Package Version Reason
@tanstack/react-start 1.169.4 → 1.169.5 Dependent
@tanstack/react-start-rsc 0.1.65 → 0.1.66 Dependent
@tanstack/router-vite-plugin 1.167.48 → 1.167.49 Dependent
@tanstack/solid-start 1.169.4 → 1.169.5 Dependent
@tanstack/start-plugin-core 1.171.55 → 1.171.56 Dependent
@tanstack/vue-start 1.169.4 → 1.169.5 Dependent

@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Walkthrough

Four TanStack Router packages now declare Node.js ^20.19.0 || >=22.12.0 as their supported engine range. A changeset records minor releases for these packages and states that Node.js 21 and Node.js 22.0–22.11 are no longer supported.

Changes: Node.js support

Layer / File(s) Summary
Node engine support declarations
packages/router-cli/package.json, packages/router-generator/package.json, packages/router-plugin/package.json, packages/router-utils/package.json, .changeset/node-engines-require-esm.md
The four package manifests specify Node.js `^20.19.0

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Other

Merge Risk: Minimal · up to e32fb

No actionable merge-blocking issue is established by the supplied evidence. Normal checks should confirm the declared Node ranges before merging.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly and concisely states the main change: narrowing the supported Node.js engine range.
Description check Passed The description explains the engine changes, motivation, affected packages, unchanged lockfile, changeset, and AI authorship. It omits the template headings and explicit checklist confirmations, but t…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
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.
Full details: Description check

Explanation

The description explains the engine changes, motivation, affected packages, unchanged lockfile, changeset, and AI authorship. It omits the template headings and explicit checklist confirmations, but the core required information is present.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Finishing Touches
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between bf3e6af and e32fb19.

Files selected for processing: 1
  • .changeset/node-engines-require-esm.md
Files skipped from review as they are similar to previous changes: 1
  • .changeset/node-engines-require-esm.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.

@nx-cloud

nx-cloud Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

View your CI Pipeline Execution ↗ for commit e32fb19

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 11m 24s View ↗

☁️ Nx Cloud last updated this comment at 2026-11-03 17:36:23 UTC

@pkg-pr-new

pkg-pr-new Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/@tanstack/arktype-adapter@8855

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@8855

@tanstack/eslint-plugin-start

npm i https://pkg.pr.new/@tanstack/eslint-plugin-start@8855

@tanstack/history

npm i https://pkg.pr.new/@tanstack/history@8855

@tanstack/react-router

npm i https://pkg.pr.new/@tanstack/react-router@8855

@tanstack/react-router-devtools

npm i https://pkg.pr.new/@tanstack/react-router-devtools@8855

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/@tanstack/react-router-ssr-query@8855

@tanstack/react-start

npm i https://pkg.pr.new/@tanstack/react-start@8855

@tanstack/react-start-client

npm i https://pkg.pr.new/@tanstack/react-start-client@8855

@tanstack/react-start-rsc

npm i https://pkg.pr.new/@tanstack/react-start-rsc@8855

@tanstack/react-start-server

npm i https://pkg.pr.new/@tanstack/react-start-server@8855

@tanstack/router-cli

npm i https://pkg.pr.new/@tanstack/router-cli@8855

@tanstack/router-core

npm i https://pkg.pr.new/@tanstack/router-core@8855

@tanstack/router-devtools

npm i https://pkg.pr.new/@tanstack/router-devtools@8855

@tanstack/router-devtools-core

npm i https://pkg.pr.new/@tanstack/router-devtools-core@8855

@tanstack/router-generator

npm i https://pkg.pr.new/@tanstack/router-generator@8855

@tanstack/router-plugin

npm i https://pkg.pr.new/@tanstack/router-plugin@8855

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/@tanstack/router-ssr-query-core@8855

@tanstack/router-utils

npm i https://pkg.pr.new/@tanstack/router-utils@8855

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/@tanstack/router-vite-plugin@8855

@tanstack/solid-router

npm i https://pkg.pr.new/@tanstack/solid-router@8855

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/@tanstack/solid-router-devtools@8855

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/@tanstack/solid-router-ssr-query@8855

@tanstack/solid-start

npm i https://pkg.pr.new/@tanstack/solid-start@8855

@tanstack/solid-start-client

npm i https://pkg.pr.new/@tanstack/solid-start-client@8855

@tanstack/solid-start-server

npm i https://pkg.pr.new/@tanstack/solid-start-server@8855

@tanstack/start-client-core

npm i https://pkg.pr.new/@tanstack/start-client-core@8855

@tanstack/start-fn-stubs

npm i https://pkg.pr.new/@tanstack/start-fn-stubs@8855

@tanstack/start-plugin-core

npm i https://pkg.pr.new/@tanstack/start-plugin-core@8855

@tanstack/start-server-core

npm i https://pkg.pr.new/@tanstack/start-server-core@8855

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/@tanstack/start-static-server-functions@8855

@tanstack/start-storage-context

npm i https://pkg.pr.new/@tanstack/start-storage-context@8855

@tanstack/valibot-adapter

npm i https://pkg.pr.new/@tanstack/valibot-adapter@8855

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/@tanstack/virtual-file-routes@8855

@tanstack/vue-router

npm i https://pkg.pr.new/@tanstack/vue-router@8855

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/@tanstack/vue-router-devtools@8855

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/@tanstack/vue-router-ssr-query@8855

@tanstack/vue-start

npm i https://pkg.pr.new/@tanstack/vue-start@8855

@tanstack/vue-start-client

npm i https://pkg.pr.new/@tanstack/vue-start-client@8855

@tanstack/vue-start-server

npm i https://pkg.pr.new/@tanstack/vue-start-server@8855

@tanstack/zod-adapter

npm i https://pkg.pr.new/@tanstack/zod-adapter@8855

commit: e32fb19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Benchmarks

This pull request does not affect bundle size in any measured scenario.

@codspeed

codspeed Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Merging this PR will improve performance by 5.41%

2 warnings

⚠️ 47 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

⚠️ 1 benchmark with a significant change ran on different hardware

Its base and head results were measured on machines with a different CPU, core count or memory, so the change might not come from the code. Run base and head on the same runner type.

Learn more about Macro Runners

See affected benchmarks

⚡ 1 improved benchmark
✅ 193 untouched benchmarks
⏩ 3 skipped benchmarks1

Performance Changes

Mode Benchmark BASE HEAD Efficiency
⚡ Memory mem client navigation-churn (solid) 110.2 KB 104.6 KB +5.41%

Tip

Curious why performance improved? Comment @codspeedbot explain why performance improved on this PR, or directly use the CodSpeed MCP with your agent.


Comparing chore/node-engines-require-esm (e32fb19) with main (13b6256)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

@Sheraff
Sheraff merged commit 446ce1b into main Nov 3, 2026
32 of 33 checks passed
@Sheraff
Sheraff deleted the chore/node-engines-require-esm branch November 3, 2026 18:15
@github-actions github-actions Bot mentioned this pull request Nov 3, 2026
Sheraff added a commit that referenced this pull request Nov 3, 2026
Main landed parts of this PR separately against the old compiler
(#8851, #8852, #8853, #8855, #8856) and re-enabled the router-utils unit
tests (#8849): the PR already has each of them. The old-compiler files
main edited stay deleted; the entries keep the PR's implementation (same
esbuild error message). Main's changesets stay; the duplicated bullets
leave the PR's router-plugin, route generator and compiler core
changesets. The router plugin skill takes main's esbuild wording.

#8857 (route-group layouts typed with full path '/'): the PR's generator
already types them '/'. Main's test that a childless `_auth.tsx` next to
the index route conflicts is dropped: SPEC J1.15 makes that pair valid
here (route-paths.test.ts checks it through the router).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant