NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2367 most downloaded on npm
Modern and scalable routing for React applications
Last release today
16 Sep 2026
Ships on a steady schedule
a new release about every 1 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
635 releases · first in 2025
One column per month.
Updated dependencies [`238ea4a`]:
238ea4a]:
Replace global route metadata with explicit router plugin contexts so multiple router plugin instances cannot cross-transform route files.
Add compiler-driven RSC CSS auto-injection for Start RSC render APIs and wire it into the React Start Vite and Rsbuild adapters. This ensures same-fil
Add compiler-driven RSC CSS auto-injection for Start RSC render APIs and wire it into the React Start Vite and Rsbuild adapters. This ensures same-file CSS module dependencies are discovered for renderServerComponent, createCompositeComponent, and JSX-based renderToReadableStream calls. (#7310)
Also add a configurable server function provider module directive hook used by the React Rsbuild RSC adapter to emit "use server-entry" only for extracted provider files.
Updated dependencies [`4a1e63f`]:
4a1e63f]:
Updated dependencies [`82b0613`]:
82b0613]:
Ignore fully type-only imports and re-exports when collecting import-protection sources so type-only references to protected modules do not trigger vi
Sort server function manifest entries by ID before emitting the resolver module. The serverFnsById map is populated in source-file scan order, which v
serverFnsById map is populated in source-file scan order, which varies across machines and incremental builds, producing non-deterministic key ordering in the emitted __tanstack-start-server-fn-resolver-*.mjs artifact. Stable alphabetic sorting ensures reproducible builds, consistent content hashes, and clean git diff on committed artifacts. (#7287)Updated dependencies [`c992495`]:
c992495]:
Updated dependencies [`b5c4183`]:
b5c4183]:
Updated dependencies [`493148b`]:
493148b]:
Updated dependencies [`a2ad394`]:
a2ad394]:
Updated dependencies [`8b97002`, `8b97002`]:
Updated dependencies [`1e371b6`]:
1e371b6]:
Add TanStack Start inline CSS manifest support for SSR so route styles can be embedded in the HTML response and hydrated without duplicate stylesheet
Add TanStack Start inline CSS manifest support for SSR so route styles can be embedded in the HTML response and hydrated without duplicate stylesheet links. (#7253)
Updated dependencies [4d864ee]:
Fix CSS asset ordering so styles from imported chunks are emitted before route chunk styles.
Split Start plugin core bundler APIs into explicit Vite and Rsbuild subpaths so projects only need the bundler they use. Mark both vite and @rsbuild/c
vite and @rsbuild/core peers as optional where Start exposes both integrations. (#7249)Updated dependencies [`91a7089`]:
Updated dependencies \[`3e016ac`]:
3e016ac]:
3e016ac]:
8c43c71]:
build.cssCodeSplit is disabled. (#7191)@tanstack/router-plugin@1.168.34
16f6892]:
@tanstack/router-plugin@1.168.33
Fix Start virtual module resolution in pnpm workspaces by serving the client entry through a real Vite virtual module. (#7178)
Simplify Start virtual module handling by sharing a single createVirtualModule helper and collapsing internal @tanstack/start-plugin-core imports to the root export surface.
Updated dependencies \[`3e016ac`]:
3e016ac]:
b0817f5]:
328d7e5]:
Updated dependencies \[`7e93431`, `f500760`, `1aafca9`, `aa10b65`]:
3e016ac]:
96ac2d8]:
Updated dependencies \[`5d3785d`, `63d2cc9`]:
51138a8]:
51138a8]:
51138a8]:
105d056]:
Updated dependencies \[`4c89b15`, `cf6ab17`, `0fdf9ff`, `bdaf73a`]:
31882c7]:
656a2a0]:
Updated dependencies \[`3e016ac`]:
3e016ac]:
7e93431]:
95dec51]:
0e2c900]:
Updated dependencies \[`5d3785d`, `63d2cc9`]:
51138a8]:
ea3a665]:
ea3a665]:
ea3a665]:
Reduce React Start SSR manifest payload size by omitting unmatched route assets from dehydrated router state while keeping start-manifest asset serialization deduplicated by shared object identity. (#7157)
This improves SSR HTML size for apps with many routes that share the same CSS assets and adds regression coverage for CSS module hydration, navigation, and start-manifest asset reuse.
Updated dependencies [812792f]:
Updated dependencies \[`4c89b15`, `cf6ab17`, `bdaf73a`]:
51138a8]:
8ec9ca9]:
Updated dependencies \[`31882c7`]:
31882c7]:
c59788c]:
ea3a665]:
b2908c6]:
b2908c6]:
b2908c6]:
Reuse previously discovered server function IDs across compiler instances so custom generateFunctionId values stay stable when duplicate IDs are deduplicated during build. (#7153)
This fixes cases where different build environments could assign different deduped IDs to the same server functions, which could cause requests to resolve to the wrong handler.
Updated dependencies \[`7e93431`]:
7e93431]:
45c4ad8]:
45c4ad8]:
6355bb7]:
Updated dependencies \[`51138a8`]:
51138a8]:
ea3a665]:
b2908c6]:
459057c]:
Updated dependencies \[`44a8c3e`, `5253e70`]:
9cac62a]:
45c4ad8]:
f8ac427]:
Updated dependencies \[`ea3a665`]:
ea3a665]:
b2908c6]:
Updated dependencies \[`84db4a8`, `9cac62a`, `6aefb33`]:
45c4ad8]:
Updated dependencies \[`b2908c6`]:
b2908c6]:
start-plugin-core build that exports the subpaths used by react-start-rsc. (3384abc)Updated dependencies \[`45c4ad8`]:
45c4ad8]:
f7e9c5e]:
Updated dependencies [`796406d`]:
796406d]:
Updated dependencies [`2d1ec86`]:
2d1ec86]:
Updated dependencies [`f8351a8`]:
f8351a8]:
Updated dependencies [`6ee0e79`]:
6ee0e79]:
Updated dependencies [`42c3f3b`]:
42c3f3b]:
Updated dependencies [`70b2225`]:
70b2225]:
Updated dependencies [`cf5f554`]:
cf5f554]:
Updated dependencies [`71a8b68`]:
71a8b68]:
Deduplicate CSS assets in the Start manifest so shared stylesheets are not repeated within a route entry or across an active parent-child route chain.
Updated dependencies [`d81d21a`]:
### Patch Changes - fix: streaming in vite preview
Updated dependencies [`c9e1855`]:
c9e1855]:
Updated dependencies [`9351e99`]:
9351e99]:
Updated dependencies [`91cc628`]:
91cc628]:
Start now cancels discarded middleware and HEAD response bodies, including plain streams and derived branches.
#8204 cbbfbe3 - Stream large deferred SSR hydration payloads through a backpressure-aware router transport, fail known setup errors before response creation, and close cancelled or expired transforms safely.
Start now cancels discarded middleware and HEAD response bodies, including plain streams and derived branches.
Server-function raw streams share one ordered response. Arbitrary or sequential consumption can require potentially unbounded buffering of unread data on the client. Cancelling one raw stream discards it locally, while aborting the whole call cancels the response and server work. Consume streams concurrently, cancel unused streams promptly, or use separate calls when independent backpressure is required. A raw stream that exceeds its unread-byte limit now fails alone; sibling streams and the JSON result keep flowing.
The JSON wire shape of a RawStream server-function argument changed. Clients and servers must run matching versions for requests that pass a RawStream.
The frame-protocol constants (FRAME_TYPE_*, MAX_FRAME_PAYLOAD_SIZE, MAX_FRAMED_STREAMS) moved from the @tanstack/start-client-core root to the @tanstack/start-client-core/client-rpc subpath.
Router requests whose Accept header allows neither text/html nor */* now receive 406 Not Acceptable instead of 500.
Framework adapters share the body <Scripts> composition (getSsrBodyScriptParts, composeSsrBodyScripts) and the eager HTML response wrapper (renderSsrHtmlResponse) from @tanstack/router-core.
Solid SSR now emits one document type and renders late lazy errors through route boundaries. A Solid <Await> without a fallback no longer holds the streamed shell; it renders inside the nearest <Suspense> boundary like React and Vue, and now renders falsy resolved values.
Static server functions decode cached RawStream values with the client deserializer plugins.
SSR Query integrations now keep request cleanup and stream ownership aligned with the router lifecycle.
Updated dependencies [cbbfbe3]:
0545239]:
Updated dependencies [ d76a332 , b747fb8 , 6cfb1e8 , 700a714 , 700a714 , cb8749e , 7e349c3 , 9b2adaf , 873c830 , 7e349c3 , 634da91 , e9396c9 , 634da91
d76a332, b747fb8, 6cfb1e8, 700a714, 700a714, cb8749e, 7e349c3, 9b2adaf, 873c830, 7e349c3, 634da91, e9396c9, 634da91, f151ab0, bc57fa3, 9872d2a, 9b2adaf, d76a332, 634da91, 634da91, 7e349c3, 9448caa, e9396c9, 700a714, 634da91, 634da91]:
Updated dependencies \[`45c4ad8`]:
45c4ad8]:
45c4ad8]:
45c4ad8]:
5ff4f0b]:
Support both Vite 7 (rollupOptions) and Vite 8 (rolldownOptions) by detecting the Vite version at runtime
rollupOptions) and Vite 8 (rolldownOptions) by detecting the Vite version at runtime (#6955)fix: write static server function cache to correct output directory when using Nitro
fix: write static server function cache to correct output directory when using Nitro (#6940)
TSS_CLIENT_OUTPUT_DIR was baked in via Vite's define at config time, before Nitro's configEnvironment hook changed the client build.outDir. This caused staticServerFnCache files to be written to dist/client/ instead of the Nitro-managed .output/public/ directory.
Now TSS_CLIENT_OUTPUT_DIR is set as a runtime environment variable during prerendering using the resolved client output directory, so it correctly reflects any output directory changes made by deployment adapters like Nitro.
Updated dependencies [940151c]:
Updated dependencies [`32fcba7`]:
32fcba7]:
build: update to vite-config 5.x (rolldown)
fix: build with @tanstack/vite-config 0.4.3
fix: add xmlns:xhtml to generated sitemap
xmlns:xhtml to generated sitemap (#6920)Updated dependencies [`6f297a2`]:
6f297a2]:
Updated dependencies [`6069eba`]:
6069eba]:
Your coding agent can read these notes before it upgrades. Set up the MCP server →