4 hours ago
router

Release 2026-11-08 01:04

Release 2026-11-08 01:04

Changes

Fix

  • 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

Refactor

  • router-plugin: remove plugin.hmr.style and HmrOptions (#8856) (533ca27044) by @Sheraff
  • router-plugin: remove compilerPlugins and splitter internals from the root entry (#8853) (13b6256830) by @Sheraff

Chore

  • 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

Packages

  • @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
4 hours ago
router

@tanstack/vue-router-devtools@1.167.3

Patch Changes

  • Updated dependencies [bbf9b75]:
    • @tanstack/router-devtools-core@1.168.3
4 hours ago
router

@tanstack/solid-start@1.169.5

Patch Changes

  • #8863 01fab5a - The Rsbuild plugin keeps the app's server.compress setting instead of always setting it to false. Compression stays off by default: a compressed streamed page reaches the browser only once the stream ends. The optional @rsbuild/core peer 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
4 hours ago
router

@tanstack/solid-router-devtools@1.167.3

Patch Changes

  • Updated dependencies [bbf9b75]:
    • @tanstack/router-devtools-core@1.168.3
4 hours ago
router

@tanstack/router-generator@1.168.0

Minor Changes

  • #8855 446ce1b - Require Node ^20.19.0 || >=22.12.0 (was >=20.19), so the CommonJS builds can load ESM-only dependencies through require(esm). Node 21 and Node 22.0–22.11 do not enable it by default, so they are no longer supported.

Patch Changes

  • #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 '/' in FileRoutesByPath, like the router gives it at runtime, instead of ''. When no index route claims /, the layout also appears under '/' in FileRoutesByFullPath and FileRoutesByTo, as a pathless layout outside a group already does.

  • Updated dependencies [446ce1b, ff157f0]:

    • @tanstack/router-utils@1.163.0
4 hours ago
router

@tanstack/router-utils@1.163.0

Minor Changes

  • #8855 446ce1b - Require Node ^20.19.0 || >=22.12.0 (was >=20.19), so the CommonJS builds can load ESM-only dependencies through require(esm). Node 21 and Node 22.0–22.11 do not enable it by default, so they are no longer supported.

Patch Changes

  • #8867 ff157f0 - Parse decorators placed after export (export @dec class Store {}). A route file with one is now read by the route generator and split, instead of logging a parse error, leaving the route tree unwritten and the route unsplit. Start's compilers, which share the parser, accept it too.
4 hours ago
router

@tanstack/vue-start@1.169.5

Patch Changes

  • #8863 01fab5a - The Rsbuild plugin keeps the app's server.compress setting instead of always setting it to false. Compression stays off by default: a compressed streamed page reaches the browser only once the stream ends. The optional @rsbuild/core peer 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-optimizes vue and reloads the page.

  • Updated dependencies [01fab5a, c5320d7, 545a8d3, da8c28c]:

    • @tanstack/start-plugin-core@1.171.56
4 hours ago
router

@tanstack/router-vite-plugin@1.167.49

Patch Changes

4 hours ago
router

@tanstack/router-plugin@1.169.0

Minor Changes

  • #8855 446ce1b - Require Node ^20.19.0 || >=22.12.0 (was >=20.19), so the CommonJS builds can load ESM-only dependencies through require(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: the vite peer range is now >=6.0.0. Vite 5 is no longer supported.

Patch Changes

  • 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's NODE_ENV isn't production. The bundler's mode decides, and a config without mode counts as production, as it does for webpack and Rspack. The warning still prints in the build output.

  • #8852 94f36c4 - The esbuild plugin now throws when autoCodeSplitting is enabled, and TanStackRouterCodeSplitterEsbuild throws, instead of silently bundling every route without splitting. Route generation with esbuild is unchanged.

  • #8856 533ca27 - Remove the undocumented plugin.hmr.style option and the HmrOptions type. 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: the codeSplittingOptions.compilerPlugins option, and the root-entry exports unpluginRouterCodeSplitterFactory, getObjectPropertyKeyName, CodeSplitCompilerPlugin, ReferenceRouteCompilerPlugin, ReferenceRouteCompilerPluginContext and VirtualRouteSplitNodeCompilerPluginContext.

  • #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; unplugin now 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-shared module id, so debuggers bind breakpoints set in the route file.

  • #8870 f420d4a - Vite route HMR now writes import.meta.hot.accept( out instead of calling it through a hot alias. 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 .ts route 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-level hot binding no longer fails to compile with Duplicate declaration "hot".

  • Updated dependencies [446ce1b, ad5b3b7, ff157f0]:

    • @tanstack/router-generator@1.168.0
    • @tanstack/router-utils@1.163.0
4 hours ago
router

@tanstack/start-plugin-core@1.171.56

Patch Changes

  • #8863 01fab5a - The Rsbuild plugin keeps the app's server.compress setting instead of always setting it to false. Compression stays off by default: a compressed streamed page reaches the browser only once the stream ends. The optional @rsbuild/core peer is now ^2.0.5, the first version whose compression keeps SSR response headers intact.

  • #8805 c5320d7 - With spa.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 - Require exsolve ^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 as src/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.plugins run (#7768). Start's own generator plugins used to replace them.
    • A function-form router.routeTreeFileFooter is 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.deleteNodes for 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.
  • 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