@tanstack/solid-router
1.170.42 · 16 Oct 2026MIT68.8k / weekRepositoryHomepagenpmAtom feed
430 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
1.170.40 – 1.170.423 releases that only update dependencies@tanstack/router-core 1.171.38Show each
- 1.170.4216 Oct 2026@tanstack/router-core 1.171.38
- 1.170.4113 Oct 2026@tanstack/router-core 1.171.37
- 1.170.4012 Oct 2026@tanstack/router-core 1.171.36
1.170.39
10 Oct 2026Links of a route that the pending navigation leaves skip deriving the destination location, and clicks and preloads follow the href a Link displays.
buildLocationnow buildsmaskandrouteMaskslocations from the same_fromLocationas the destination.Cancel pending link preload timers when starting navigation to avoid redundant preloading while the destination is loading.
Solid Links resolve their own props through one reactive memo instead of two, which makes mounting and updating many Links slightly faster.
Patch Changes
Links of a route that the pending navigation leaves skip deriving the destination location, and clicks and preloads follow the href a Link displays.
buildLocationnow buildsmaskandrouteMaskslocations from the same_fromLocationas the destination.Cancel pending link preload timers when starting navigation to avoid redundant preloading while the destination is loading.
Solid Links resolve their own props through one reactive memo instead of two, which makes mounting and updating many Links slightly faster.
Solid and Vue Links reuse the router's built destination across navigations and derive their state through fewer reactive nodes. Solid Links call a user
refonce per element and create no reactive nodes on the server.
1.170.38
30 Sep 2026Only updates a dependency:@tanstack/router-core 1.171.34
1.170.37
27 Sep 2026Skip unused Link preload cleanup when preloading is disabled and ignore queued viewport notifications after their effect has been cleaned up.
Patch Changes
Skip unused Link preload cleanup when preloading is disabled and ignore queued viewport notifications after their effect has been cleaned up.
1.170.36
16 Sep 2026Only updates a dependency:@tanstack/router-core 1.171.32
1.170.35
16 Sep 2026deepEqualnow takes its flags as positional arguments —deepEqual(a, b, partial?, explicitUndefined?)— instead of an options object. The router's hot callers (Link option stabilization and active-state checks,matchRoute) no longer allocate an options object per comparison, and the comparator reads two booleans instead of a polymorphic object.explicitUndefinedreplacesignoreUndefined: false.deepEqualis an internal helper; it stays exported for compatibility of two-argument calls.resolvePath(internal helper) now takes positional arguments —resolvePath(base, to, trailingSlash?, cache?)— sobuildLocationandmatchRouteno longer allocate an options object per path resolution.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
RawStreamserver-function argument changed. Clients and servers must run matching versions for requests that pass aRawStream.The frame-protocol constants (
FRAME_TYPE_*,MAX_FRAME_PAYLOAD_SIZE,MAX_FRAMED_STREAMS) moved from the@tanstack/start-client-coreroot to the@tanstack/start-client-core/client-rpcsubpath.Router requests whose
Acceptheader allows neithertext/htmlnor*/*now receive406 Not Acceptableinstead of500.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 afallbackno 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
RawStreamvalues with the client deserializer plugins.SSR Query integrations now keep request cleanup and stream ownership aligned with the router lifecycle.
Patch Changes
deepEqualnow takes its flags as positional arguments —deepEqual(a, b, partial?, explicitUndefined?)— instead of an options object. The router's hot callers (Link option stabilization and active-state checks,matchRoute) no longer allocate an options object per comparison, and the comparator reads two booleans instead of a polymorphic object.explicitUndefinedreplacesignoreUndefined: false.deepEqualis an internal helper; it stays exported for compatibility of two-argument calls.resolvePath(internal helper) now takes positional arguments —resolvePath(base, to, trailingSlash?, cache?)— sobuildLocationandmatchRouteno longer allocate an options object per path resolution.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
RawStreamserver-function argument changed. Clients and servers must run matching versions for requests that pass aRawStream.The frame-protocol constants (
FRAME_TYPE_*,MAX_FRAME_PAYLOAD_SIZE,MAX_FRAMED_STREAMS) moved from the@tanstack/start-client-coreroot to the@tanstack/start-client-core/client-rpcsubpath.Router requests whose
Acceptheader allows neithertext/htmlnor*/*now receive406 Not Acceptableinstead of500.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 afallbackno 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
RawStreamvalues with the client deserializer plugins.SSR Query integrations now keep request cleanup and stream ownership aligned with the router lifecycle.
1.170.34
13 Sep 2026Keep Solid Link's computed
href,target, anddisabledvalues authoritative when active or inactive state props contain routing options, while preserving state-prop refs, event handlers, and class/style merging.Allow active and inactive Link props to override base element props in React and Solid while preserving class/style merging. Keep React's
href,target, anddisabledvalues controlled by routing options. Preserve Vue object and nested-array class bindings, including reactive updates and server rendering, without mutating cached bindings during VNode normalization.Make
pathParamsAllowedCharactersinitialization-only. Configure it when creating the router; changing allowed characters requires a new router instance. Remove decoder-update bookkeeping and decoder-change checks from route-owned path caches.
Patch Changes
Keep Solid Link's computed
href,target, anddisabledvalues authoritative when active or inactive state props contain routing options, while preserving state-prop refs, event handlers, and class/style merging.Allow active and inactive Link props to override base element props in React and Solid while preserving class/style merging. Keep React's
href,target, anddisabledvalues controlled by routing options. Preserve Vue object and nested-array class bindings, including reactive updates and server rendering, without mutating cached bindings during VNode normalization.Make
pathParamsAllowedCharactersinitialization-only. Configure it when creating the router; changing allowed characters requires a new router instance. Remove decoder-update bookkeeping and decoder-change checks from route-owned path caches.Stop exporting the internal
isPlainObjectandisPlainArrayhelpers.Reduce Link bundle size by sharing exact/fuzzy active-path checks and resolving only the selected active or inactive props. Avoid unnecessary class/style allocations while preserving reactive style updates, server rendering, and each framework's prop-override behavior.
1.170.33
10 Sep 2026Skip client-only hydration, preloading, observer, and event-handler setup for all server-rendered links.
Avoid duplicate external script execution when a Solid script includes both
srcand children. Reuse each Solid hydration boundary's marker element instead of scanning all document markers on mount.
1.170.32
9 Sep 2026Validate navigation and redirect destinations, keep ambiguous relative URLs on the current origin, and constrain prerender requests and output paths. Prevent redirect headers from appearing in serialized server function response bodies.
Preserve native form HTTP redirects, route error handling and masks for document redirects, and per-navigation destinations for shared loader redirects. Avoid redundant origin parsing and reduce link styling and server-rendering work. Configured origins must already be normalized.
Keep blocked-link inactive props consistent during React hydration, honor explicit redirect Location headers before checking route options, and refresh Vue link state when destinations become internal. Reuse the protocol-relative URL check while parsing redirect schemes once.
Reduce React link bundle size by sharing pathname comparisons, state-prop selection, and element creation.
Share normalized pathname comparisons in Solid and Vue links to reduce bundle size.
Patch Changes
Validate navigation and redirect destinations, keep ambiguous relative URLs on the current origin, and constrain prerender requests and output paths. Prevent redirect headers from appearing in serialized server function response bodies.
Preserve native form HTTP redirects, route error handling and masks for document redirects, and per-navigation destinations for shared loader redirects. Avoid redundant origin parsing and reduce link styling and server-rendering work. Configured origins must already be normalized.
Keep blocked-link inactive props consistent during React hydration, honor explicit redirect Location headers before checking route options, and refresh Vue link state when destinations become internal. Reuse the protocol-relative URL check while parsing redirect schemes once.
Reduce React link bundle size by sharing pathname comparisons, state-prop selection, and element creation.
Share normalized pathname comparisons in Solid and Vue links to reduce bundle size.
1.170.31
6 Sep 2026Exclude structural descendants below error and not-found boundaries from route lifecycle callbacks. Preserve lifecycle membership through invalidation, hydration, background reloads, and superseded navigation publication.
Preserve falsy thrown values in React and Vue error boundaries. Type React and Vue boundary error components and
onCatchcallbacks asunknown. Solid boundary errors remain typed asError; SSR now wraps non-Errorloader errors to match Solid’s native boundary behavior, preserving the original value incause. Router state and loaderonErrorvalues are unchanged.When upgrading React or Vue, narrow boundary errors (for example, with
error instanceof Error) before readingmessageorstack.ErrorComponentProps<TError>remains available for values narrowed to a specific error type. RouteonErrortypes are unchanged.Retain successful not-found matches as terminal shared boundaries during client navigation, preserving route context while the destination loads.
Patch Changes
Exclude structural descendants below error and not-found boundaries from route lifecycle callbacks. Preserve lifecycle membership through invalidation, hydration, background reloads, and superseded navigation publication.
Preserve falsy thrown values in React and Vue error boundaries. Type React and Vue boundary error components and
onCatchcallbacks asunknown. Solid boundary errors remain typed asError; SSR now wraps non-Errorloader errors to match Solid’s native boundary behavior, preserving the original value incause. Router state and loaderonErrorvalues are unchanged.When upgrading React or Vue, narrow boundary errors (for example, with
error instanceof Error) before readingmessageorstack.ErrorComponentProps<TError>remains available for values narrowed to a specific error type. RouteonErrortypes are unchanged.Retain successful not-found matches as terminal shared boundaries during client navigation, preserving route context while the destination loads.
Use URL.canParse for absolute URL checks in links, navigation, redirects, and build configuration. Preserve a URL constructor fallback for older browsers.
Fix route-scoped
useMatch,useSearch, anduseParamsAPIs to forward theshouldThrowoption and preserve optional return types whenshouldThrow: false.
1.170.30
22 Aug 2026Build client preload locations on demand and remove the prebuilt-location argument used by framework links.
preserve context during reloads
Patch Changes
Build client preload locations on demand and remove the prebuilt-location argument used by framework links.
preserve context during reloads
1.170.29
19 Aug 2026Only updates a dependency:@tanstack/router-core 1.171.26
1.170.28
18 Aug 2026preserve pending UI across retained routes
Patch Changes
preserve pending UI across retained routes
1.170.27
14 Aug 2026inline isCtrlKey inside Link component for byte shaving
Patch Changes
inline isCtrlKey inside Link component for byte shaving
1.170.26
14 Aug 2026Reuse resolved lazy route components when revisiting code-split routes, preventing unnecessary pending UI.
Keep active route components mounted by default when route params change.
Patch Changes
Reuse resolved lazy route components when revisiting code-split routes, preventing unnecessary pending UI.
Keep active route components mounted by default when route params change.
1.170.25
12 Aug 2026Warn when an Outlet is rendered inside a pending, error, or not-found component.
remove the undocumented Link
isTransitioningstate anddata-transitioningattributeApply
preloadDelayto viewport link preloading and cancel pending preloads when links leave the viewport.
Patch Changes
Warn when an Outlet is rendered inside a pending, error, or not-found component.
remove the undocumented Link
isTransitioningstate anddata-transitioningattributeApply
preloadDelayto viewport link preloading and cancel pending preloads when links leave the viewport.
1.170.22 – 1.170.243 releases that only update dependencies@tanstack/router-core 1.171.21Show each
- 1.170.249 Aug 2026@tanstack/router-core 1.171.21
- 1.170.239 Aug 2026@tanstack/router-core 1.171.20
- 1.170.227 Aug 2026@tanstack/router-core 1.171.19
1.170.21
6 Aug 2026createFileRoute does not rely on FileRoute class
compact private bundle boundaries- #7975
clean intersection observer options in link component
Patch Changes
createFileRoute does not rely on FileRoute class
compact private bundle boundaries- #7975
clean intersection observer options in link component
Preserve path params in their raw string form while matching routes so structured values returned by
params.parseproduce stable match IDs and do not reuse stale loader data.RouterCore.getMatchedRoutes()now returns[matchedRoutes, rawParams, foundRoute]instead of an object.
1.170.20
5 Aug 2026Only updates a dependency:@tanstack/router-core 1.171.17
1.170.19
4 Aug 2026router: correct lane loader changeset
router-core: lane match loader rewrite
@tanstack/react-router@1.170.19
Release 2026-08-04 20:36
Changes
Fix
router: correct lane loader changeset
router-core: lane match loader rewrite
Packages
@tanstack/react-router@1.170.19
@tanstack/react-router-devtools@1.167.1
@tanstack/react-start@1.168.36
@tanstack/react-start-client@1.168.17
@tanstack/react-start-rsc@0.1.35
@tanstack/react-start-server@1.167.24
@tanstack/router-cli@1.167.22
@tanstack/router-core@1.171.16
@tanstack/router-devtools@1.167.1
@tanstack/router-devtools-core@1.168.1
@tanstack/router-generator@1.167.22
@tanstack/router-plugin@1.168.24
@tanstack/router-vite-plugin@1.167.24
@tanstack/solid-router@1.170.19
@tanstack/solid-router-devtools@1.167.1
@tanstack/solid-start@1.168.35
@tanstack/solid-start-client@1.168.17
@tanstack/solid-start-server@1.167.24
@tanstack/start-client-core@1.170.15
@tanstack/start-plugin-core@1.171.27
@tanstack/start-server-core@1.169.19
@tanstack/start-static-server-functions@1.167.20
@tanstack/start-storage-context@1.167.18
@tanstack/vue-router@1.170.18
@tanstack/vue-router-devtools@1.167.1
@tanstack/vue-start@1.168.34
@tanstack/vue-start-client@1.167.20
@tanstack/vue-start-server@1.167.24
1.170.18
13 Jul 2026Reading the note…
1.170.17
1 Jul 2026Reading the note…
1.170.16
16 Jun 2026Reading the note…
1.170.15
6 Jun 2026Reading the note…
1.170.14
6 Jun 2026Reading the note…
1.170.13
5 Jun 2026Reading the note…
1.170.12
5 Jun 2026Reading the note…
1.170.11
2 Jun 2026Reading the note…
1.170.10
30 May 2026Reading the note…
1.170.9
29 May 2026Reading the note…
1.170.8
24 May 2026Reading the note…
1.170.7
21 May 2026Reading the note…
1.170.6
20 May 2026Reading the note…
1.170.5
20 May 2026Reading the note…
1.170.4
17 May 2026Reading the note…
1.170.3
16 May 2026Reading the note…
1.170.2
16 May 2026Reading the note…
1.170.1
15 May 2026Reading the note…
1.170.0
15 May 2026Reading the note…
1.169.8
11 May 2026Reading the note…
1.169.5
11 May 2026Reading the note…
1.169.2
5 May 2026Reading the note…
1.169.1
1 May 2026Reading the note…
1.169.0
30 Apr 2026Reading the note…
1.168.26
29 Apr 2026Reading the note…
1.168.25
27 Apr 2026Reading the note…