Release 2026-11-08 01:04
Release 2026-11-08 01:04
- router-devtools-core: restore embedded panel styling (#8888) (bbf9b75808) by @schiller-manuel
- start-plugin-core: define TSS_SHELL in Rsbuild dev for SPA mode (#8805) (c5320d7ca2) by @pujitha24
- vue-start: pre-bundle @tanstack/vue-store so a cold dev start doesn't reload the page (#8869) (d05c6c66e7) by @Sheraff
- router-utils: parse decorators after
export(#8867) (ff157f0079) by @Sheraff - router-plugin: write
import.meta.hot.accept(out in Vite route HMR (#8870) (f420d4a6da) by @Sheraff - start-plugin-core: require exsolve ^1.1.3, and see new entry files after a dev server restart (#8871) (545a8d3790) by @Sheraff
- router-plugin: omit browser warnings from production bundles (#8269) (1ba19a0445) by @LadyBluenotes
- start-plugin-core: keep the app's server.compress on Rsbuild (#8863) (01fab5a6c8) by @Sheraff
- start-plugin-core: pass Start's router options through to the generator and code splitter (#8861) (da8c28c498) by @Sheraff
- router-plugin: point split routes' source maps at the route file (#8860) (b5e2ac9c4c) by @Sheraff
- react-start-client: call HydrationBoundary hooks before the visible() gate (#8653) (d66a84ba0a) by @ethan-huo
- router-generator: type route-group layouts with full path
'/'(#8857) (ad5b3b7a09) by @Sheraff - router-plugin: throw on autoCodeSplitting with esbuild (#8852) (94f36c4a9e) by @Sheraff
- router-plugin: remove
plugin.hmr.styleandHmrOptions(#8856) (533ca27044) by @Sheraff - router-plugin: remove
compilerPluginsand splitter internals from the root entry (#8853) (13b6256830) by @Sheraff
- require Node ^20.19.0 || >=22.12.0 in engines (#8855) (446ce1b306) by @Sheraff
- router-plugin: require Vite 6 or later in the peer range (#8851) (d25081952d) by @Sheraff
- @tanstack/react-router-devtools@1.167.3
- @tanstack/react-start@1.169.5
- @tanstack/react-start-client@1.168.45
- @tanstack/react-start-rsc@0.1.66
- @tanstack/router-cli@1.168.0
- @tanstack/router-devtools@1.167.3
- @tanstack/router-devtools-core@1.168.3
- @tanstack/router-generator@1.168.0
- @tanstack/router-plugin@1.169.0
- @tanstack/router-utils@1.163.0
- @tanstack/router-vite-plugin@1.167.49
- @tanstack/solid-router-devtools@1.167.3
- @tanstack/solid-start@1.169.5
- @tanstack/start-plugin-core@1.171.56
- @tanstack/vue-router-devtools@1.167.3
- @tanstack/vue-start@1.169.5
@tanstack/vue-router-devtools@1.167.3
- Updated dependencies [
bbf9b75]:- @tanstack/router-devtools-core@1.168.3
@tanstack/solid-start@1.169.5
-
#8863
01fab5a- The Rsbuild plugin keeps the app'sserver.compresssetting instead of always setting it tofalse. Compression stays off by default: a compressed streamed page reaches the browser only once the stream ends. The optional@rsbuild/corepeer is now^2.0.5, the first version whose compression keeps SSR response headers intact. -
Updated dependencies [
01fab5a,c5320d7,545a8d3,da8c28c]:- @tanstack/start-plugin-core@1.171.56
@tanstack/solid-router-devtools@1.167.3
- Updated dependencies [
bbf9b75]:- @tanstack/router-devtools-core@1.168.3
@tanstack/router-generator@1.168.0
- #8855
446ce1b- Require Node^20.19.0 || >=22.12.0(was>=20.19), so the CommonJS builds can load ESM-only dependencies throughrequire(esm). Node 21 and Node 22.0–22.11 do not enable it by default, so they are no longer supported.
-
#8857
ad5b3b7- A pathless layout inside a route group (routes/(group)/_layout.tsx) or a route group's own layout (routes/(group)/route.tsx) is typed with the full path'/'inFileRoutesByPath, like the router gives it at runtime, instead of''. When no index route claims/, the layout also appears under'/'inFileRoutesByFullPathandFileRoutesByTo, as a pathless layout outside a group already does. -
Updated dependencies [
446ce1b,ff157f0]:- @tanstack/router-utils@1.163.0
@tanstack/router-utils@1.163.0
@tanstack/vue-start@1.169.5
-
#8863
01fab5a- The Rsbuild plugin keeps the app'sserver.compresssetting instead of always setting it tofalse. Compression stays off by default: a compressed streamed page reaches the browser only once the stream ends. The optional@rsbuild/corepeer is now^2.0.5, the first version whose compression keeps SSR response headers intact. -
#8869
d05c6c6- Vite dev: Vue Start pre-bundles@tanstack/vue-router > @tanstack/vue-store, as React Start does for@tanstack/react-store. The first page load on a cold dependency cache no longer re-optimizesvueand reloads the page. -
Updated dependencies [
01fab5a,c5320d7,545a8d3,da8c28c]:- @tanstack/start-plugin-core@1.171.56
@tanstack/router-plugin@1.169.0
-
#8855
446ce1b- Require Node^20.19.0 || >=22.12.0(was>=20.19), so the CommonJS builds can load ESM-only dependencies throughrequire(esm). Node 21 and Node 22.0–22.11 do not enable it by default, so they are no longer supported. -
#8851
d250819- Require Vite 6 or later: thevitepeer range is now>=6.0.0. Vite 5 is no longer supported.
-
1ba19a0- fix: webpack and Rspack production builds no longer put the code splitter's "will not be code-split" warning, with the route file's absolute path, into the client bundle when the build process'sNODE_ENVisn'tproduction. The bundler's mode decides, and a config withoutmodecounts as production, as it does for webpack and Rspack. The warning still prints in the build output. -
#8852
94f36c4- The esbuild plugin now throws whenautoCodeSplittingis enabled, andTanStackRouterCodeSplitterEsbuildthrows, instead of silently bundling every route without splitting. Route generation with esbuild is unchanged. -
#8856
533ca27- Remove the undocumentedplugin.hmr.styleoption and theHmrOptionstype. Each bundler entry now picks its own HMR runtime: the webpack and Rspack entries already forced'webpack', and on Vite,'webpack'broke route HMR. -
#8853
13b6256- Remove internal code-splitter APIs: thecodeSplittingOptions.compilerPluginsoption, and the root-entry exportsunpluginRouterCodeSplitterFactory,getObjectPropertyKeyName,CodeSplitCompilerPlugin,ReferenceRouteCompilerPlugin,ReferenceRouteCompilerPluginContextandVirtualRouteSplitNodeCompilerPluginContext. -
#8860
b5e2ac9- Source maps of split routes now point at the route file. On webpack and Rspack (including Rsbuild), a split component or shared code mapped to the wrong line, because unplugin's loader dropped the router plugin's map;unpluginnow requires^3.5.0, which keeps it. The maps of split and shared modules also name the route file itself instead of its?tsr-split/?tsr-sharedmodule id, so debuggers bind breakpoints set in the route file. -
#8870
f420d4a- Vite route HMR now writesimport.meta.hot.accept(out instead of calling it through ahotalias. Vite only treats a module as a hot boundary when the call is spelled out, so an edit of a route file no framework plugin accepts (a.tsroute file, or an app without@vitejs/plugin-react) reloaded the page instead of updating the route in place. With React HMR, a route file that declares its own top-levelhotbinding no longer fails to compile withDuplicate declaration "hot". -
Updated dependencies [
446ce1b,ad5b3b7,ff157f0]:- @tanstack/router-generator@1.168.0
- @tanstack/router-utils@1.163.0
@tanstack/start-plugin-core@1.171.56
-
#8863
01fab5a- The Rsbuild plugin keeps the app'sserver.compresssetting instead of always setting it tofalse. Compression stays off by default: a compressed streamed page reaches the browser only once the stream ends. The optional@rsbuild/corepeer is now^2.0.5, the first version whose compression keeps SSR response headers intact. -
#8805
c5320d7- Withspa.enabled, the Rsbuild dev server answers the SPA shell, as Vite's dev server does, instead of rendering the route and running its loaders on the server. -
#8871
545a8d3- Requireexsolve^1.1.3: a failed lookup that exsolve caches no longer keeps its callers alive, so Start's cached failed lookups no longer hold on to each build's objects. Entry lookups bypass exsolve's process-wide cache, so a dev server restart finds an entry file (such assrc/start.ts) created since. -
#8861
da8c28c- Start's router options now reach the route generator and the code splitter as they do in a router app:- Generator plugins given as
router.pluginsrun (#7768). Start's own generator plugins used to replace them. - A function-form
router.routeTreeFileFooteris called at every print of the route tree. Start's Vite plugin used to print its first result for the whole dev server. - Start's Rsbuild plugin keeps
router.codeSplittingOptions.deleteNodesfor the server build. It used to drop the option there. - Start's Vite plugin finds the client route tree by its exact module id (#8839). With a regular-expression character in the project path, such as
+, the client used to get the full route tree, server-only routes included; a file whose name differed from the route tree's by one character (routeTree-gen.ts) was replaced by the client route tree.
- Generator plugins given as
-
Updated dependencies [
1ba19a0,94f36c4,446ce1b,ad5b3b7,533ca27,13b6256,b5e2ac9,d250819,f420d4a,ff157f0]:- @tanstack/router-plugin@1.169.0
- @tanstack/router-generator@1.168.0
- @tanstack/router-utils@1.163.0