Skip to content

Conversation

@schiller-manuel
Copy link
Contributor

@schiller-manuel schiller-manuel commented Dec 17, 2025

srvx was fixed in h3js/srvx#153
closes #3490
closes #4271

Summary by CodeRabbit

  • New Features
    • Added dedicated abort-signal pages with separate GET and POST routes and an index page exposing links to both.
  • Tests
    • Converted abort-signal tests to run per-method (GET/POST); added test run result artifacts indicating passing runs.
  • Chores
    • Bumped a development dependency version across multiple example, e2e, and core packages.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 17, 2025

Walkthrough

Bumps many e2e/example srvx versions and adds per-method abort-signal routes and handlers (index + $method) for React and Solid server-functions, updates generated route trees, and converts abort-signal tests to parameterized GET/POST suites; two test-result JSON files were added.

Changes

Cohort / File(s) Summary
Dependency version bumps
e2e/.../package.json, examples/react/start-clerk-basic/package.json, packages/start-plugin-core/package.json
Updated srvx versions across many e2e and example package.json files (from ^0.8.6 / 0.8.15 / ^0.8.2 variants to ^0.9.8).
React server-functions routes & gen
e2e/react-start/server-functions/src/routes/abort-signal/index.tsx, e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx, e2e/react-start/server-functions/src/routeTree.gen.ts
Added index route /abort-signal/, introduced /abort-signal/$method route with params (GET
Solid server-functions routes & gen
e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx, e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx, e2e/solid-start/server-functions/src/routeTree.gen.ts
Mirror of React changes: added index route, added $method route with params, refactored server function to shared impl + method-specific handlers, and updated generated route tree/types to expose new AbortSignalIndex/Method routes and remove the old AbortSignalRoute.
Tests updated (parameterized by method)
e2e/react-start/server-functions/tests/server-functions.spec.ts, e2e/solid-start/server-functions/tests/server-functions.spec.ts
Replaced single abort-signal test with parameterized suites for GET and POST, preserving assertions but running scenarios per method (without aborting and aborting).
Test result artifacts
e2e/solid-start/basic-solid-query/test-results/.last-run.json, e2e/solid-start/query-integration/test-results/.last-run.json
Added .last-run.json files containing {"status":"passed","failedTests":[]} indicating passed runs.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Heterogeneous changes: many simple dependency bumps plus non-trivial route/handler refactors and generated typing updates.
  • Areas needing attention:
    • Generated route tree diffs (routeTree.gen.ts) for consistency and typing correctness.
    • New $method route param validation and server-function invocation patterns (double-invocation behavior).
    • Tests: ensure parameterized tests correctly exercise both GET and POST flows.
    • Verify dependency bumps didn't unintentionally change lockfiles or scripts.

Suggested reviewers

  • brenelz

Poem

🐇 I hopped through routes and bumped a seed,
New paths for GET and POST I freed,
Tests now loop with method cheer,
Version bumped — the updates clear,
A joyful twitch, the code is sped!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: bump srvx' accurately reflects the main change: updating the srvx dependency across multiple package.json files from ^0.8.6/0.8.2 to ^0.9.8, plus route refactoring.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch bump-srvx

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

@nx-cloud
Copy link

nx-cloud bot commented Dec 17, 2025

View your CI Pipeline Execution ↗ for commit baf8666

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 1m 45s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 1s View ↗

☁️ Nx Cloud last updated this comment at 2025-12-17 20:03:52 UTC

@pkg-pr-new
Copy link

pkg-pr-new bot commented Dec 17, 2025

More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/arktype-adapter@6128

@tanstack/directive-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/directive-functions-plugin@6128

@tanstack/eslint-plugin-router

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

@tanstack/history

npm i https://pkg.pr.new/TanStack/router/@tanstack/history@6128

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/nitro-v2-vite-plugin@6128

@tanstack/react-router

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

@tanstack/react-router-devtools

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

@tanstack/react-router-ssr-query

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

@tanstack/react-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start@6128

@tanstack/react-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-client@6128

@tanstack/react-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-server@6128

@tanstack/router-cli

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

@tanstack/router-core

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

@tanstack/router-devtools

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

@tanstack/router-devtools-core

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

@tanstack/router-generator

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

@tanstack/router-plugin

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

@tanstack/router-ssr-query-core

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

@tanstack/router-utils

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

@tanstack/router-vite-plugin

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

@tanstack/server-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/server-functions-plugin@6128

@tanstack/solid-router

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

@tanstack/solid-router-devtools

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

@tanstack/solid-router-ssr-query

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

@tanstack/solid-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start@6128

@tanstack/solid-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-client@6128

@tanstack/solid-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-server@6128

@tanstack/start-client-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-client-core@6128

@tanstack/start-plugin-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-plugin-core@6128

@tanstack/start-server-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-core@6128

@tanstack/start-static-server-functions

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

@tanstack/start-storage-context

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-storage-context@6128

@tanstack/valibot-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/valibot-adapter@6128

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/TanStack/router/@tanstack/virtual-file-routes@6128

@tanstack/vue-router

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

@tanstack/vue-router-devtools

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

@tanstack/vue-router-ssr-query

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

@tanstack/vue-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-start@6128

@tanstack/vue-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-start-client@6128

@tanstack/vue-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/vue-start-server@6128

@tanstack/zod-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/zod-adapter@6128

commit: baf8666

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d5a7aee and 57fa28d.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • e2e/react-start/basic-react-query/package.json (1 hunks)
  • e2e/react-start/basic-tsr-config/package.json (1 hunks)
  • e2e/react-start/basic/package.json (1 hunks)
  • e2e/react-start/custom-basepath/package.json (1 hunks)
  • e2e/react-start/scroll-restoration/package.json (1 hunks)
  • e2e/react-start/selective-ssr/package.json (1 hunks)
  • e2e/react-start/serialization-adapters/package.json (1 hunks)
  • e2e/react-start/server-functions/package.json (1 hunks)
  • e2e/react-start/server-routes/package.json (1 hunks)
  • e2e/react-start/virtual-routes/package.json (1 hunks)
  • e2e/react-start/website/package.json (1 hunks)
  • e2e/solid-start/basic-solid-query/package.json (1 hunks)
  • e2e/solid-start/basic-solid-query/test-results/.last-run.json (1 hunks)
  • e2e/solid-start/basic-tsr-config/package.json (1 hunks)
  • e2e/solid-start/basic/package.json (1 hunks)
  • e2e/solid-start/custom-basepath/package.json (1 hunks)
  • e2e/solid-start/query-integration/test-results/.last-run.json (1 hunks)
  • e2e/solid-start/scroll-restoration/package.json (1 hunks)
  • e2e/solid-start/selective-ssr/package.json (1 hunks)
  • e2e/solid-start/serialization-adapters/package.json (1 hunks)
  • e2e/solid-start/server-functions/package.json (1 hunks)
  • e2e/solid-start/server-routes/package.json (1 hunks)
  • e2e/solid-start/virtual-routes/package.json (1 hunks)
  • e2e/solid-start/website/package.json (1 hunks)
  • e2e/vue-start/basic/package.json (1 hunks)
  • e2e/vue-start/selective-ssr/package.json (1 hunks)
  • e2e/vue-start/serialization-adapters/package.json (1 hunks)
  • examples/react/start-clerk-basic/package.json (1 hunks)
  • packages/start-plugin-core/package.json (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/package.json

📄 CodeRabbit inference engine (AGENTS.md)

Use workspace protocol workspace:* for internal dependencies in package.json files

Files:

  • e2e/solid-start/serialization-adapters/package.json
  • e2e/solid-start/scroll-restoration/package.json
  • packages/start-plugin-core/package.json
  • e2e/react-start/serialization-adapters/package.json
  • e2e/solid-start/selective-ssr/package.json
  • e2e/react-start/scroll-restoration/package.json
  • e2e/solid-start/basic-solid-query/package.json
  • e2e/solid-start/website/package.json
  • e2e/react-start/selective-ssr/package.json
  • e2e/vue-start/basic/package.json
  • e2e/solid-start/server-functions/package.json
  • e2e/react-start/server-functions/package.json
  • e2e/react-start/server-routes/package.json
  • e2e/vue-start/selective-ssr/package.json
  • e2e/react-start/basic-react-query/package.json
  • e2e/react-start/website/package.json
  • e2e/react-start/basic-tsr-config/package.json
  • e2e/react-start/virtual-routes/package.json
  • e2e/solid-start/virtual-routes/package.json
  • e2e/solid-start/custom-basepath/package.json
  • e2e/solid-start/basic-tsr-config/package.json
  • e2e/react-start/basic/package.json
  • e2e/vue-start/serialization-adapters/package.json
  • e2e/solid-start/server-routes/package.json
  • e2e/react-start/custom-basepath/package.json
  • e2e/solid-start/basic/package.json
  • examples/react/start-clerk-basic/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Test
  • GitHub Check: Preview
🔇 Additional comments (26)
e2e/react-start/server-functions/package.json (1)

39-39: LGTM: Consistent devDependency update.

e2e/vue-start/selective-ssr/package.json (1)

24-24: LGTM: Consistent devDependency update.

e2e/react-start/serialization-adapters/package.json (1)

32-32: LGTM: Consistent devDependency update.

e2e/react-start/scroll-restoration/package.json (1)

36-36: LGTM: Consistent devDependency update.

e2e/react-start/virtual-routes/package.json (1)

36-36: LGTM: Consistent devDependency update.

e2e/solid-start/server-functions/package.json (1)

35-35: LGTM: Consistent devDependency update.

e2e/solid-start/query-integration/test-results/.last-run.json (1)

1-4: Test artifact documenting passed test run.

This file captures the test execution status and is a standard test framework artifact.

e2e/react-start/selective-ssr/package.json (1)

32-32: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8.

e2e/react-start/custom-basepath/package.json (1)

33-33: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8.

e2e/react-start/server-routes/package.json (1)

39-39: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8.

e2e/react-start/basic-tsr-config/package.json (1)

25-25: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8.

e2e/react-start/basic-react-query/package.json (1)

37-37: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8.

e2e/solid-start/website/package.json (1)

30-30: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8.

e2e/vue-start/basic/package.json (1)

46-46: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8.

e2e/solid-start/basic/package.json (1)

44-44: LGTM: Consistent version bump.

The srvx devDependency has been correctly updated to ^0.9.8. This version exists in the npm registry and is consistent with updates across other e2e and example configurations in the repository.

e2e/solid-start/basic-solid-query/package.json (1)

33-33: Dependency bump looks good.

The srvx version bump from ^0.8.6 to ^0.9.8 is consistent with the PR objective.

e2e/solid-start/basic-solid-query/test-results/.last-run.json (1)

1-4: Test results confirm compatibility.

The test results show all tests passed, which provides confidence that the srvx version bump doesn't introduce regressions.

e2e/solid-start/custom-basepath/package.json (1)

29-29: LGTM!

Consistent srvx version bump across e2e packages.

e2e/vue-start/serialization-adapters/package.json (1)

25-25: LGTM!

Consistent srvx version bump.

packages/start-plugin-core/package.json (1)

79-79: Production dependency bump - verify thoroughly.

This bumps srvx from ^0.8.2 to ^0.9.8 in the dependencies (not devDependencies) of a published package. Since this is a runtime dependency, ensure that:

  1. All package tests pass (test:unit, test:types, test:build)
  2. No breaking changes affect the package's usage of srvx
e2e/react-start/website/package.json (1)

33-33: LGTM!

Consistent srvx version bump.

examples/react/start-clerk-basic/package.json (1)

21-21: LGTM - improved version range specification.

The bump from "0.8.15" to "^0.9.8" not only updates the version but also adopts the caret range, which is more consistent with other dependencies in the project.

e2e/solid-start/scroll-restoration/package.json (1)

32-32: LGTM! Version bump consistent with PR objectives.

The srvx devDependency update aligns with the broader version bump across the repository.

e2e/solid-start/virtual-routes/package.json (1)

32-32: LGTM! Version bump consistent with PR objectives.

The srvx devDependency update aligns with the broader version bump across the repository.

e2e/solid-start/basic-tsr-config/package.json (1)

23-23: LGTM! Version bump consistent with PR objectives.

The srvx devDependency update aligns with the broader version bump across the repository.

e2e/react-start/basic/package.json (1)

46-46: LGTM! Version bump consistent with PR objectives.

The srvx devDependency update aligns with the broader version bump across the repository.

"@tanstack/router-e2e-utils": "workspace:^",
"postcss": "^8.5.1",
"srvx": "^0.8.6",
"srvx": "^0.9.8",
Copy link
Contributor

@coderabbitai coderabbitai bot Dec 17, 2025

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Version ^0.9.8 does not exist on npm registry.

The srvx package only has versions 0.9.1 (latest), 0.9.0, and 0.8.x. Update to a valid version: either ^0.9.1 or ^0.9.0.

🤖 Prompt for AI Agents
e2e/solid-start/selective-ssr/package.json around line 24: the dependency
"srvx": "^0.9.8" references a non-existent npm version; change it to a valid
published version such as "^0.9.1" (or "^0.9.0") in package.json and then run
your package manager to update lockfile (npm install or yarn install) so the
lockfile and node_modules match the new version.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy link
Contributor

Choose a reason for hiding this comment

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

🧩 Analysis chain

🌐 Web query:

srvx npm package version 0.9.8

💡 Result:

I couldn't find any published npm release for srvx at version 0.9.8. Public registries show versions up through 0.8–0.9.x (example: jsDelivr lists up to 0.9.7) and the npm package pages show 0.2–0.8 series as published. [1][2]

If you want, I can:

  • check npm for a specific dist-tag or publish history, or
  • look for a GitHub release / tag named v0.9.8.

References:
[1] npm package listings for "srvx".
[2] jsDelivr package versions for "srvx".


🏁 Script executed:

#!/bin/bash
# Check npm registry API for srvx version 0.9.8
curl -s https://registry.npmjs.org/srvx/0.9.8 | jq '.version, .name' 2>/dev/null || echo "Version not found in registry"

# Also check all available versions
echo "---"
echo "All available versions:"
curl -s https://registry.npmjs.org/srvx | jq '.versions | keys | .[]' | tail -10

Length of output: 122


@schiller-manuel You're absolutely right, and I apologize for the error. Version 0.9.8 of srvx does exist on the npm registry. Thank you for the correction!


🧠 Learnings used
Learnt from: nlynzaad
Repo: TanStack/router PR: 5732
File: packages/start-client-core/src/client/hydrateStart.ts:6-9
Timestamp: 2025-11-02T16:16:24.898Z
Learning: In packages/start-client-core/src/client/hydrateStart.ts, the `import/no-duplicates` ESLint disable is necessary for imports from `#tanstack-router-entry` and `#tanstack-start-entry` because both aliases resolve to the same placeholder file (`fake-start-entry.js`) in package.json during static analysis, even though they resolve to different files at runtime.

"@types/node": "^22.10.2",
"postcss": "^8.5.1",
"srvx": "^0.8.6",
"srvx": "^0.9.8",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Version 0.9.8 does not exist on the npm registry. The latest version of srvx is 0.9.1, with available releases including 0.9.1, 0.9.0, and versions through 0.8.6. Update the dependency to a valid version (e.g., 0.9.1 or use the caret range ^0.9.0).

🤖 Prompt for AI Agents
In e2e/solid-start/serialization-adapters/package.json around line 28, the
dependency "srvx": "^0.9.8" references a non-existent npm version; change the
version to a valid published release such as "srvx": "0.9.1" or use a caret
range like "srvx": "^0.9.0" so the package.json points to an available version
and npm install will succeed.

"combinate": "^1.1.11",
"postcss": "^8.5.1",
"srvx": "^0.8.6",
"srvx": "^0.9.8",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

cat -n e2e/solid-start/server-routes/package.json | head -50

Repository: TanStack/router

Length of output: 1580


Version 0.9.8 does not exist in npm registry.

The latest available version of srvx is 0.9.1, with available versions including 0.9.1, 0.9.0, 0.8.16, 0.8.15, and earlier in the 0.8.x series. The specified version ^0.9.8 in package.json will fail to install. Update to either ^0.9.1 (latest) or ^0.9.0 depending on requirements.

🤖 Prompt for AI Agents
In e2e/solid-start/server-routes/package.json around line 35, the dependency
version "srvx": "^0.9.8" is invalid (0.9.8 not published); change it to a
published version such as "^0.9.1" (or "^0.9.0" if preferred), update
package.json accordingly, regenerate your lockfile (npm install / yarn install)
and run the project tests/build to ensure the new version installs and works.

@schiller-manuel schiller-manuel changed the title chore: bump srvx fix: bump srvx Dec 17, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx (1)

13-30: Minor: Abort listener cleanup on successful completion.

When the promise resolves normally (after the 1-second timeout), the abort listener remains attached to the signal. While { once: true } removes the listener after it fires, if the timer completes first, the listener persists until the signal is garbage collected. This is typically fine for e2e test code where signals are short-lived, but for production code you'd want explicit cleanup.

If you want to clean it up for completeness:

 function serverFnImpl(signal: AbortSignal) {
   console.log('server function started', { signal })
   return new Promise<string>((resolve, reject) => {
     if (signal.aborted) {
       return reject(new Error('Aborted before start'))
     }
     const timerId = setTimeout(() => {
       console.log('server function finished')
+      signal.removeEventListener('abort', onAbort)
       resolve('server function result')
     }, 1000)
     const onAbort = () => {
       clearTimeout(timerId)
       console.log('server function aborted')
       reject(new Error('Aborted'))
     }
     signal.addEventListener('abort', onAbort, { once: true })
   })
 }
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 57fa28d and baf8666.

📒 Files selected for processing (8)
  • e2e/react-start/server-functions/src/routeTree.gen.ts (13 hunks)
  • e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx (1 hunks)
  • e2e/react-start/server-functions/src/routes/abort-signal/index.tsx (1 hunks)
  • e2e/react-start/server-functions/tests/server-functions.spec.ts (1 hunks)
  • e2e/solid-start/server-functions/src/routeTree.gen.ts (13 hunks)
  • e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx (3 hunks)
  • e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx (1 hunks)
  • e2e/solid-start/server-functions/tests/server-functions.spec.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Use TypeScript strict mode with extensive type safety for all code

Files:

  • e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx
  • e2e/solid-start/server-functions/tests/server-functions.spec.ts
  • e2e/react-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/react-start/server-functions/tests/server-functions.spec.ts
  • e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
**/*.{js,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Implement ESLint rules for router best practices using the ESLint plugin router

Files:

  • e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx
  • e2e/solid-start/server-functions/tests/server-functions.spec.ts
  • e2e/react-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/react-start/server-functions/tests/server-functions.spec.ts
  • e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
🧠 Learnings (7)
📚 Learning: 2025-09-28T21:41:45.233Z
Learnt from: nlynzaad
Repo: TanStack/router PR: 5284
File: e2e/react-start/basic/server.js:50-0
Timestamp: 2025-09-28T21:41:45.233Z
Learning: In Express v5, catch-all routes must use named wildcards. Use `/*splat` to match everything except root path, or `/{*splat}` (with braces) to match including root path. The old `*` syntax is not allowed and will cause "Missing parameter name" errors. This breaking change requires explicit naming of wildcard parameters.

Applied to files:

  • e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx
  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
📚 Learning: 2025-12-06T15:03:07.223Z
Learnt from: CR
Repo: TanStack/router PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T15:03:07.223Z
Learning: Applies to **/*.{js,ts,tsx} : Implement ESLint rules for router best practices using the ESLint plugin router

Applied to files:

  • e2e/react-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
📚 Learning: 2025-10-08T08:11:47.088Z
Learnt from: nlynzaad
Repo: TanStack/router PR: 5402
File: packages/router-generator/tests/generator/no-formatted-route-tree/routeTree.nonnested.snapshot.ts:19-21
Timestamp: 2025-10-08T08:11:47.088Z
Learning: Test snapshot files in the router-generator tests directory (e.g., files matching the pattern `packages/router-generator/tests/generator/**/routeTree*.snapshot.ts` or `routeTree*.snapshot.js`) should not be modified or have issues flagged, as they are fixtures used to verify the generator's output and are intentionally preserved as-is.

Applied to files:

  • e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
📚 Learning: 2025-12-06T15:03:07.223Z
Learnt from: CR
Repo: TanStack/router PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-06T15:03:07.223Z
Learning: Use file-based routing in `src/routes/` directories or code-based routing with route definitions

Applied to files:

  • e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx
  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
📚 Learning: 2025-10-01T18:31:35.420Z
Learnt from: schiller-manuel
Repo: TanStack/router PR: 5330
File: e2e/react-start/custom-basepath/src/routeTree.gen.ts:58-61
Timestamp: 2025-10-01T18:31:35.420Z
Learning: Do not review files named `routeTree.gen.ts` in TanStack Router repositories, as these are autogenerated files that should not be manually modified.

Applied to files:

  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
📚 Learning: 2025-12-17T02:17:47.423Z
Learnt from: schiller-manuel
Repo: TanStack/router PR: 6120
File: packages/router-generator/src/generator.ts:654-657
Timestamp: 2025-12-17T02:17:47.423Z
Learning: In `packages/router-generator/src/generator.ts`, pathless_layout routes must receive a `path` property when they have a `cleanedPath`, even though they are non-path routes. This is necessary because child routes inherit the path from their parent, and without this property, child routes would not have the correct full path at runtime.

Applied to files:

  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
📚 Learning: 2025-11-02T16:16:24.898Z
Learnt from: nlynzaad
Repo: TanStack/router PR: 5732
File: packages/start-client-core/src/client/hydrateStart.ts:6-9
Timestamp: 2025-11-02T16:16:24.898Z
Learning: In packages/start-client-core/src/client/hydrateStart.ts, the `import/no-duplicates` ESLint disable is necessary for imports from `#tanstack-router-entry` and `#tanstack-start-entry` because both aliases resolve to the same placeholder file (`fake-start-entry.js`) in package.json during static analysis, even though they resolve to different files at runtime.

Applied to files:

  • e2e/react-start/server-functions/src/routeTree.gen.ts
  • e2e/solid-start/server-functions/src/routeTree.gen.ts
🧬 Code graph analysis (4)
e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx (1)
e2e/react-start/server-functions/src/routes/abort-signal/index.tsx (1)
  • Route (3-5)
e2e/react-start/server-functions/src/routes/abort-signal/index.tsx (1)
e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx (1)
  • Route (6-11)
e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx (1)
e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx (1)
  • Route (6-11)
e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx (1)
e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx (1)
  • Route (3-5)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Test
🔇 Additional comments (10)
e2e/solid-start/server-functions/src/routes/abort-signal/index.tsx (1)

1-25: LGTM!

Clean implementation of the abort-signal index route. The Link components correctly use the to prop with params to navigate to the dynamic $method route, and the Solid.js class attribute is properly used instead of React's className.

e2e/solid-start/server-functions/tests/server-functions.spec.ts (1)

269-314: LGTM!

Good refactoring to a parametric test structure that covers both GET and POST methods without code duplication. The test paths correctly match the new route structure (/abort-signal/GET and /abort-signal/POST), and the assertions properly verify both successful and aborted server function calls.

e2e/solid-start/server-functions/src/routes/abort-signal/$method.tsx (1)

31-42: LGTM!

Clean separation of GET and POST server function variants sharing the same implementation. The dynamic selection based on route params is properly handled.

e2e/solid-start/server-functions/src/routeTree.gen.ts (1)

1-642: Skipping review of autogenerated file.

This file is automatically generated by TanStack Router and should not be manually modified. Based on learnings, routeTree.gen.ts files are excluded from review.

e2e/react-start/server-functions/tests/server-functions.spec.ts (1)

323-368: LGTM! Clean parameterized test structure.

The refactoring to parameterized tests effectively exercises both GET and POST methods while eliminating duplication. The test logic properly waits for page state and validates both success and error scenarios.

e2e/react-start/server-functions/src/routes/abort-signal/index.tsx (1)

1-27: LGTM! Clean navigation implementation.

The index route provides clear navigation to per-method abort signal tests using properly typed Link components.

e2e/react-start/server-functions/src/routes/abort-signal/$method.tsx (3)

13-37: LGTM! Clean implementation with proper signal handling.

The shared serverFnImpl provides correct abort signal handling with proper cleanup. The separation into GET and POST server functions is appropriate for type safety and framework requirements.


39-97: LGTM! Proper dynamic function selection.

The component correctly uses route params to select the appropriate server function and implements proper error handling for both abort and success scenarios.


4-4: Change to namespace import for consistency and tree-shaking.

The default import import z from 'zod' should be changed to the namespace import: import * as z from 'zod'. The namespace import style promotes better tree-shaking and reduces bundle sizes, and the Zod documentation consistently uses import * as z from "zod" as the recommended pattern.

Likely an incorrect or invalid review comment.

e2e/react-start/server-functions/src/routeTree.gen.ts (1)

1-663: Skipping review of autogenerated file.

This is an autogenerated route tree file that should not be manually modified or reviewed. The changes correctly reflect the new abort-signal route structure.

Based on learnings, as this is a routeTree.gen.ts file.

@schiller-manuel schiller-manuel merged commit 11d26ad into main Dec 17, 2025
6 checks passed
@schiller-manuel schiller-manuel deleted the bump-srvx branch December 17, 2025 20:04
@coderabbitai coderabbitai bot mentioned this pull request Dec 30, 2025
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.

POST serverFn instantly aborts with signal Server Fn Signal and API route (request.signal) does not actually fire 'abort' event.

2 participants