Skip to content

feat: report unsupported compiler patterns instead of skipping them (prototype) - #8642

Draft
Sheraff wants to merge 10 commits into
codex/yuku-evaluationfrom
feat/compiler-diagnostics
Draft

Sheraff wants to merge 10 commits into
codex/yuku-evaluationfrom
feat/compiler-diagnostics

Conversation

@Sheraff

@Sheraff Sheraff commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Prototype, stacked on #8504 (Babel → Yuku compiler migration). It captures diagnostics for compiler patterns that are already silent on main, so they are not forgotten. Patterns that became silent in the migration itself are handled in #8504 (for example the this.warn for a route created inside a function, which this PR reuses).

Policy agreed with the maintainer:

  • Failing beats leaking silently.
  • Warn in dev, error in build, so an edit in progress does not break the dev server. Security leaks (server code shipped to the client) fail the build and are loud in dev.
  • Precedent: import protection ({ dev, build } behaviour, dedup with a seen set, bundler warning channel).

Breadth over polish: each item has behaviour-level tests in its topic suite, but the messages, option surface and exact precision are open for discussion (see the open questions).

Items

# Pattern Before: main / #8504 Now Dev / build Related #8630 pin
1 Any Start factory call the compiler missed (cross-module included): createServerFn().handler() without the compiled RPC, createServerOnlyFn(), createClientOnlyFn(), createIsomorphicFn().server() reaching the runtime stub in the browser silent: server code runs in / ships to the browser console.error naming the factory, that it was not compiled, and how to write it (module-level variable, factory imported directly from the Start package) dev, browser only (NODE_ENV !== 'production' && !== 'test', !(isServer ?? typeof window === 'undefined')) / nothing in production runtime safety net for the cross-module pins: export * diamonds/cycles, builder finished in another module, namespace-read builder (F.authed.handler), re-exported Start namespace, authed() from another module
2 Unrecognized use of a Start factory in the client compilation: const authed = () => createServerFn(), (0, createServerFn)(), Start['createServerFn'](), aliased createServerOnlyFn inside a function, builder in an object property or a ternary, factory passed to user code silent: implementation and its server-only imports ship to the client Unrecognized use of createX at file:line:col: it is not compiled, so its implementation ships to the client. … this.warn once per message / build error flips "a builder returned by a function of the same module"; now reported (pin stays red because it asserts compilation): "createServerOnlyFn called through a renamed import / local alias in a function body", "result is member-called (.bind)"
3 Two createFileRoute calls in one route file main: renders the wrong component; #8504: build fails with "Duplicated export 'component'" "file" calls createFileRoute 2 times: + file:line:col of each call error in dev and build (output would be broken either way); a root route next to a file route is fine —
4a await / for await / yield in split <Hydrate> children (outside nested functions) chunk does not parse, unclear build failure clear compile error error (dev and build) flips "await in split children is rejected clearly"
4b arguments of the component in split children (stops at non-arrow functions) chunk silently reads its own props clear compile error error flips "split children reading the component's arguments"
4c Hooks recognized by binding: useState as st, React 19 use(), React.useId() (namespace or default import; react, solid-js, vue), plus the existing use[A-Z0-9] name rule for custom hooks moved into the chunk component existing "calls hooks during render" error error flips "a hook called through a namespace in the children is rejected"
4d <Hydrate {...props} />: children from a spread, left unsplit silent "receives its children from a spread, so they won't be code-split" dev warning only / nothing related to "children passed through a spread" (still red: it asserts they render split)
5 "These exports … will not be code-split" console.warn on every transform; missing in a production build when the exported option is the only split one bundler this.warn, once per message, also in builds warn / warn —
6a Split option written as a method, getter or setter (component() {}) silently not split "… is a method, so it will not be code-split. Write it as a property: component: () => ..." (#8459 proposes splitting them instead) warn / warn —
6b ['codeSplitGroupings'] computed key silently ignored error error / error —
6c Split options or codeSplitGroupings from a spread resolving to an object literal; split option behind a computed key ['component'] silently not split / ignored warning naming the keys warn / warn —
6d createFileRoute<'/a'>('/a') (type arguments) route file skipped by the code filter: not split, not hot-updated fix: filter accepts \s*(?:<|\() for every route factory — —
6e import { createFileRoute as cfr }, Router.createFileRoute(...) in a route file silently neither split nor hot-updated warning from the code splitter and the route HMR plugin warn / warn related to the generator pin "a moved route with an aliased import gets the id of its new path" (still red, generator not touched)
7 Disallowed character in square brackets of a route path console.error + process.exit(1): kills the dev server throws; the generator plugin logs it in dev and keeps running; a build now fails on any route generation error (Vite command === 'build', Rspack/webpack beforeRun) instead of bundling a stale tree log / error —

Pin status was checked by running the known-bugs-start-compiler and known-bugs-hydrate files of #8630 against this branch and against #8504: exactly the four pins named "flips" above change from expected-fail to passing. The router-plugin and router-generator pins were not affected by design.

Notes per item

  • 1: the runtime check fires once per definition (module evaluation), so it needs no dedup. createIsomorphicFn() alone is not reported, since compiled code keeps a bare builder (export const iso = createIsomorphicFn()); only .server() reaching the stub is. start-fn-stubs uses typeof window !== 'undefined' without isServer, to avoid adding a @tanstack/router-core dependency to it; the NODE_ENV gate already removes the block from every production bundle, and isServer is undefined in dev, so it would not change any outcome. start-client-core uses isServer ?? typeof window === 'undefined' as AGENTS.md says. NODE_ENV === 'test' is excluded explicitly because unit tests (Vitest with jsdom) run uncompiled by design.
  • 2: references come from Yuku (module.imports, binding.references, parentOf), not names. A reference is accepted when it is on a call chain the compiler rewrote, initializes a module-level variable with an unfinished builder (no .handler/.server/.client/.createMiddlewares in the chain, createServerFn/createMiddleware/createIsomorphicFn only), or initializes a module-level alias (const cs = createServerFn) whose references follow the same rule. Of the rest, only uses that call the factory (through any call/member chain, sequence, conditional or logical expression) or pass it to a function are reported; other value uses (an array element, an object value, a comparison, a re-export, a type) carry no implementation and are left alone. That last rule came from the bundle-size benchmark app react-start.full, whose [createMiddleware, createServerFn, useServerFn] failed its build with the first version. References inside code the client output drops (server fn handler, middleware/isomorphic .server() argument, createServerOnlyFn argument) are skipped. Only the client compilation checks, and virtual modules (?tss-…) are skipped so a Hydrate chunk does not report twice.
  • 5: the injected dev-only console.warn in the route module stays: it reaches the browser console, where the terminal warning is often not seen. Note that Vite 8 relays browser console output to the terminal, so in dev the terminal now shows the bundler warning once per environment (client and SSR) plus a relayed [console.warn] per page load; dropping the injected warning is an option if that is too noisy. Dedup is per message (which names the file and exports), so an edit that changes the exported set reports again.
  • 6: option checks only run for keys the effective groupings would split (a loader() {} with the default groupings is not reported).

False positives / precision

  • 2 — factory passed to user code (makeBuilder(createServerFn)): reported. The compiler cannot follow it either way, so the implementation does ship, but a user may consider it intentional.
  • 2 — build errors ignore tree-shaking: unlike import protection, a build fails even if the unrecognized use is dead code (an unused const authed = () => createServerFn()). Reporting only what survives tree-shaking would need the import-protection deferral machinery.
  • 2 — dependencies are compiled too: a library that wraps a Start factory in one of these patterns now fails the user's build (same as feat: migrate Router and Start compilation to Yuku #8504's createServerFn placement error).
  • 2 — escaping value uses are not reported: const factories = { cs: createServerFn }; factories.cs().handler(...) leaks without a compile-time report (item 1 catches it at runtime in dev). This is the price of not failing on the benchmark-style [createServerFn] surface arrays.
  • 2 — gaps: aliasing a namespace (const S = Start; S.createServerFn()), an alias declared with destructuring, and cross-module patterns (a builder in another module) are not reported at compile time; item 1 catches the cross-module ones at runtime in dev.
  • 1 — Storybook / uncompiled browser dev environments: a story that imports a module defining a server fn logs one console.error per server fn (the statement is true, the server code is in that bundle, but it is harmless there). Vitest is excluded via NODE_ENV=test; Vitest browser mode with another NODE_ENV is not.
  • 4c: the name rule (use[A-Z0-9]…) is kept for custom hooks, so a non-hook function named useThing is still rejected, as before.
  • 4d: a spread of a non-literal object always warns, even if it never holds children.
  • 6c: only spreads of a module-level object literal are resolved; an imported object is not.
  • 7: a build that hit any generator error (not only this one) used to log and continue with a stale route tree; it now fails.

Open questions for the maintainer

  1. Should an unrecognized factory use be a dev overlay error (like import protection's error mode) rather than a terminal warning, given it is a server-code leak?
  2. Add a user option mirroring import protection, e.g. compilerDiagnostics: { dev: 'warn' | 'error' | 'off', build: … }, at least to silence item 2 for libraries / intentional patterns?
  3. Item 2 in builds: fail at transform time (current), or report only uses that survive tree-shaking (import-protection style, more machinery)?
  4. Item 1: should it also throw (not only console.error) for createServerOnlyFn, so the leaked server code does not run in the browser in dev? And is excluding NODE_ENV=test acceptable given AGENTS.md's !== 'production' rule?
  5. Item 3 is an error in dev too, since the output is broken either way. OK, or warn in dev and keep only the first route?
  6. Item 7: should a generator error fail the build for every error (current), or only for this one?

Validation

  • test:unit (Nx): router-plugin 973, router-utils 84, router-generator 270 + 12, start-plugin-core 925, start-client-core 125, start-fn-stubs 18, react-start-rsc 67 (affected consumer): all pass.
  • test:types, test:eslint, test:build for router-plugin, router-utils, router-generator, start-plugin-core, start-client-core, start-fn-stubs: pass (start-client-core keeps its 44 existing lint warnings).
  • tanstack-router-e2e-react-basic-file-based-code-splitting:test:e2e: 6 passed. One new-channel warning in the build output, a true positive: posts.$postId.tsx exports PostErrorComponent, used as its errorComponent ("will not be code-split", item 5). It was already printed with console.warn before.
  • tanstack-react-start-e2e-basic:test:e2e: all modes pass (137–140 tests each). No new message in the build or test output.
  • Dev smoke test of e2e/react-start/server-functions (vite dev, Playwright: /, /env-only, /isomorphic-fns, /server-fn-in-client-only-fn, running the env-only and isomorphic functions): no [TanStack Start] runtime report and no compile-time report, so the internal createServerOnlyFn/createIsomorphicFn().server() uses of start-client-core are compiled in dev and do not trigger item 1.
  • Bundle size (benchmark:bundle-size:run, all 18 scenarios, feat: migrate Router and Start compilation to Yuku #8504 head 37111c76a7 vs this branch), production gzip bytes, all unchanged (raw, brotli and initial also +0):
Scenario Base This PR Δ
react-router.minimal 85979 85979 0
react-router.full 89627 89627 0
solid-router.minimal 34285 34285 0
solid-router.full 39322 39322 0
vue-router.minimal 50647 50647 0
vue-router.full 56396 56396 0
react-start.minimal 99029 99029 0
react-start.query-integration 106654 106654 0
react-start.deferred-hydration 99773 99773 0
react-start.full 102285 102285 0
react-start.rsbuild.minimal 102735 102735 0
react-start.rsbuild.minimal-iife 103154 103154 0
react-start.rsbuild.full 106062 106062 0
solid-start.minimal 47358 47358 0
solid-start.deferred-hydration 50476 50476 0
solid-start.full 52614 52614 0
vue-start.minimal 67003 67003 0
vue-start.full 70939 70939 0

The benchmark builds print none of the new diagnostics. Only the measurement phase of the bundle-size workflow was run: there is nothing to optimize at +0.

🤖 Generated with Claude Code

Sheraff and others added 10 commits October 8, 2026 21:59
…d of exiting the process

A disallowed character inside square brackets of a route path called
process.exit(1), which killed a running dev server. Throw an error instead,
so the router generator plugin reports it: a dev server logs it and keeps
running, and a build (Vite, Rspack or webpack) now fails on any route
generation error instead of bundling a stale route tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ype arguments

The route factory code filter required `createFileRoute(` and
`createRootRoute(`, so a route file calling `createFileRoute<'/a'>('/a')`
was never code-split nor hot-updated. Accept type arguments for every route
factory, and let route files that rename a route factory import through, so
the plugins can report them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Report through the bundler (`this.warn`, once per message) instead of
silently skipping:
- a renamed (`createFileRoute as cfr`) or namespaced route factory, which is
  neither split nor hot-updated (code splitter and route HMR plugin);
- a split option written as a method, getter or setter, or behind a
  computed key, and split options or codeSplitGroupings spread from another
  object (only options the groupings would split);
- an exported split option: the warning moves from console.warn on every
  transform to the bundler, and now also fires in a production build where
  the exported option is the only split one. The dev-only console.warn
  injected into the route module stays, for the browser console.

Fail the compilation with a clear error for:
- a route file that calls createFileRoute more than once, naming every
  call (it failed with "Duplicated export" in the split chunks);
- codeSplitGroupings behind a computed key, which were ignored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion leaves alone

A Start factory call the compiler cannot rewrite keeps its implementation,
and the server-only code it reads, in the client bundle without a word:
a builder returned by a function, `(0, createServerFn)()`,
`Start['createServerFn']()`, an aliased createServerOnlyFn in a function, a
builder held in an object property or a ternary, the factory passed to user
code.

In the client compilation, every reference to a module-scope import of a
Start factory (or a member of a namespace import of a Start package),
resolved through Yuku references, must now be part of a call chain the
compiler rewrites, initialize a module-level builder variable (unfinished
by handler/server/client), be re-exported, or initialize a module-level
alias whose references follow the same rule. References inside code the
client output drops, such as a server fn handler, are not checked.

Anything else is reported with its location: a warning in dev, once per
message, and an error that fails a build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s in a function

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o a chunk component

Split <Hydrate> children move into the chunk's own component, so code that
reads the state of the rendering component's call changed meaning or broke
the chunk silently. Fail the compilation with a clear error for:
- await, for await and yield in the children, outside nested functions
  (the chunk did not parse);
- arguments of the component in the children, up to the first non-arrow
  function (the chunk read its own props);
- hooks recognized by their import rather than by a use* name only: a
  renamed hook (useState as state), React 19 use(), and hooks read from a
  namespace or default import (React.useId()), of react, solid-js or vue.

In dev, warn once when a boundary receives its children from a spread,
which leaves them unsplit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… browser in development

The compiler rewrites every Start factory call of the client bundle, so a
call that reaches the runtime uncompiled is one it missed, cross-module ones
included, and its server code shipped to the client. In development, in the
browser, report it with console.error, naming the factory and how to write
it so it compiles:
- createServerFn().handler() called without the RPC the compiler passes;
- createServerOnlyFn() and createClientOnlyFn() called at all;
- createIsomorphicFn().server() called at all (a bare createIsomorphicFn()
  builder stays in compiled code, so it is not reported).

The checks are gated by direct process.env.NODE_ENV checks, so production
bundles do not change, and skip NODE_ENV=test, where code runs uncompiled
by design.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ass the factory

The bundle-size benchmark apps keep the Start API surface alive with
`[createMiddleware, createServerFn]`, which failed their build. A value use
that neither calls the factory nor hands it to a function carries no
implementation, so it is left alone. A sequence, conditional or logical
expression around the factory still counts as a use, but never as a
module-level builder or alias.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…compiled server fn

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

changeset-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a618e3b

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

This PR includes changesets to release 19 packages
Name Type
@tanstack/router-plugin Minor
@tanstack/router-generator Patch
@tanstack/start-plugin-core Minor
@tanstack/start-client-core Patch
@tanstack/start-fn-stubs Patch
@tanstack/router-vite-plugin Patch
@tanstack/router-cli Patch
@tanstack/react-start-rsc Patch
@tanstack/react-start Patch
@tanstack/solid-start Patch
@tanstack/vue-start Patch
@tanstack/react-start-client Patch
@tanstack/solid-start-client Patch
@tanstack/start-server-core Patch
@tanstack/start-static-server-functions Patch
@tanstack/vue-start-client Patch
@tanstack/react-start-server Patch
@tanstack/solid-start-server Patch
@tanstack/vue-start-server 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

@coderabbitai

coderabbitai Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · 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

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

@nx-cloud

nx-cloud Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

View your CI Pipeline Execution ↗ for commit a618e3b

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

☁️ Nx Cloud last updated this comment at 2026-10-08 21:07:21 UTC

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

14 package(s) bumped directly, 12 bumped as dependents.

🟨 Minor bumps

Package Version Reason
@tanstack/router-cli 1.167.40 → 1.168.0 Changeset
@tanstack/router-generator 1.167.40 → 1.168.0 Changeset
@tanstack/router-plugin 1.168.42 → 1.169.0 Changeset
@tanstack/router-utils 1.162.3 → 1.163.0 Changeset
@tanstack/router-vite-plugin 1.167.42 → 1.168.0 Changeset
@tanstack/start-plugin-core 1.171.49 → 1.172.0 Changeset

🟩 Patch bumps

Package Version Reason
@tanstack/history 1.162.4 → 1.162.5 Changeset
@tanstack/react-router 1.170.41 → 1.170.42 Changeset
@tanstack/react-start-rsc 0.1.59 → 0.1.60 Changeset
@tanstack/router-core 1.171.34 → 1.171.35 Changeset
@tanstack/solid-router 1.170.38 → 1.170.39 Changeset
@tanstack/start-client-core 1.170.34 → 1.170.35 Changeset
@tanstack/start-fn-stubs 1.162.0 → 1.162.1 Changeset
@tanstack/vue-router 1.170.37 → 1.170.38 Changeset
@tanstack/react-start 1.168.60 → 1.168.61 Dependent
@tanstack/react-start-client 1.168.39 → 1.168.40 Dependent
@tanstack/react-start-server 1.167.46 → 1.167.47 Dependent
@tanstack/solid-start 1.168.57 → 1.168.58 Dependent
@tanstack/solid-start-client 1.168.37 → 1.168.38 Dependent
@tanstack/solid-start-server 1.167.44 → 1.167.45 Dependent
@tanstack/start-server-core 1.169.39 → 1.169.40 Dependent
@tanstack/start-static-server-functions 1.167.39 → 1.167.40 Dependent
@tanstack/start-storage-context 1.167.36 → 1.167.37 Dependent
@tanstack/vue-start 1.168.56 → 1.168.57 Dependent
@tanstack/vue-start-client 1.167.40 → 1.167.41 Dependent
@tanstack/vue-start-server 1.167.44 → 1.167.45 Dependent

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Benchmarks

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

@pkg-pr-new

pkg-pr-new Bot commented Oct 8, 2026

Copy link
Copy Markdown
More templates

@tanstack/arktype-adapter

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

@tanstack/eslint-plugin-router

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

@tanstack/eslint-plugin-start

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

@tanstack/history

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

@tanstack/nitro-v2-vite-plugin

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

@tanstack/react-router

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

@tanstack/react-router-devtools

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

@tanstack/react-router-ssr-query

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

@tanstack/react-start

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

@tanstack/react-start-client

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

@tanstack/react-start-rsc

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

@tanstack/react-start-server

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

@tanstack/router-cli

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

@tanstack/router-core

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

@tanstack/router-devtools

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

@tanstack/router-devtools-core

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

@tanstack/router-generator

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

@tanstack/router-plugin

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

@tanstack/router-ssr-query-core

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

@tanstack/router-utils

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

@tanstack/router-vite-plugin

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

@tanstack/solid-router

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

@tanstack/solid-router-devtools

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

@tanstack/solid-router-ssr-query

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

@tanstack/solid-start

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

@tanstack/solid-start-client

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

@tanstack/solid-start-server

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

@tanstack/start-client-core

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

@tanstack/start-fn-stubs

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

@tanstack/start-plugin-core

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

@tanstack/start-server-core

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

@tanstack/start-static-server-functions

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

@tanstack/start-storage-context

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

@tanstack/valibot-adapter

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

@tanstack/virtual-file-routes

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

@tanstack/vue-router

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

@tanstack/vue-router-devtools

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

@tanstack/vue-router-ssr-query

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

@tanstack/vue-start

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

@tanstack/vue-start-client

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

@tanstack/vue-start-server

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

@tanstack/zod-adapter

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

commit: a618e3b

@codspeed

codspeed Bot commented Oct 8, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 194 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing feat/compiler-diagnostics (a618e3b) with codex/yuku-evaluation (37111c7)

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. ↩

This branch has not been deployed

No deployments
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