# What changed in @tanstack/solid-router

> 93 changes in @tanstack/solid-router 1 from its official release notes, upgrade guides and advisories: 51 breaking, 1 security, 1 new APIs and options. Each one cited. Sources checked 2026-11-15. HTML: https://unstale.sh/npm/@tanstack/solid-router/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @tanstack/solid-router 1

### Breaking changes

- A Solid `<Await>` without a `fallback` no longer holds the streamed shell; it renders inside the nearest `<Suspense>` boundary and renders falsy resolved values. (1.170.35) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.35)
- Flags are now positional arguments (`partial?`, `explicitUndefined?`) instead of an options object; `explicitUndefined` replaces `ignoreUndefined: false`. (1.170.35) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.35)
- The internal helper is no longer exported. (1.170.34) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.34)
- This option is initialization-only: configure it when creating the router; changing allowed characters requires creating a new router instance. (1.170.34) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.34)
- Configured origins must already be normalized. (1.170.32) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.32)
- Active route components remain mounted by default when route params change. (1.170.26) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.26)
- Removes the data-transitioning attribute from Link. (1.170.25) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.25)
- Removes the undocumented Link state isTransitioning. (1.170.25) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.25)
- RouterCore.getMatchedRoutes() now returns a tuple of matched routes, raw parameters, and the found route instead of an object. (1.170.21) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.21)
- The standalone @tanstack/router-core export has been removed; use the router.getMatchedRoutes() instance method. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The exported GetMatchFn type has been removed along with the method it typed. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The exported Solid Match component now accepts routeId instead of matchId. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- MatchRoutesOpts.dest has been removed. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- MatchRoutesOpts.preload has been removed. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- Redirect.redirectHandled has been removed because it was internal redirect bookkeeping. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouteMatch.fetchCount has been removed with no replacement; it was purely informational. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouteMatch.globalNotFound was renamed and privatized to _notFound; use match.status === 'notFound' instead. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The status union no longer includes 'redirected'; redirected matches are dropped from the match list instead of being rendered. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.beforeLoad() has been removed with no replacement. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.cancelMatch() has been removed, with no replacement for cancelling an individual in-flight match externally. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.cancelMatches() has been removed, with no replacement for cancelling an individual in-flight match externally. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.clearExpiredCache() has been removed; expired cache entries are reconciled automatically as part of match commit. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.commitLocationPromise has been replaced by the internal _commitPromise field. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.getMatch() has been removed; read matches from router.state.matches. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.getParsedLocationHref() has been removed with no replacement. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.hasNotFoundMatch() has been removed; check router.state.matches for a match with status 'notFound'. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.isPrerendering() has been removed with no replacement. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.isViewTransitionTypesSupported has been removed with no replacement. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.latestLoadPromise has been removed with no replacement. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The optional second argument no longer accepts an array of component types; it now accepts 'errorComponent', 'notFoundComponent', or false for internal boundary loading. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.looseRoutesById has been removed; use routesById. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.pendingBuiltLocation has been replaced by the internal _pendingLocation field. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.updateMatch() has been removed, with no replacement for mutating an individual in-flight match externally. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterCore.viewTransitionPromise has been removed with no replacement. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterState no longer includes isTransitioning; subscribe to router.state.status or router.state.isLoading instead. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterState no longer includes loadedAt; use match.updatedAt instead. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterState no longer exposes redirect; redirect handling is internal to the server loader. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- RouterState no longer exposes statusCode; server response status handling is internal to the server loader. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The adapter contract replaces getRouteMatchStore() with getMatchStore(). (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The separate isLoading store has been removed; read application-facing state from router.state. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The separate isTransitioning store has been removed; read application-facing state from router.state. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The separate loadedAt store has been removed; read application-facing state from router.state. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The adapter contract replaces matchesId with ids for route-keyed presentation stores. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The adapter contract replaces matchStores with byRoute for route-keyed presentation stores. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- Pending and cache stores and their setters have been removed; preload and cache coordination are now internal. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The separate redirect store has been removed; read application-facing state from router.state. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The separate statusCode store has been removed; read application-facing state from router.state. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- StartTransitionFn now has signature (fn, expected) => Promise<boolean> instead of (fn) => void; custom framework adapters implementing startTransition are affected. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- StoreConfig.init has been removed. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The exported UpdateMatchFn type has been removed along with the method it typed. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The script callback context now exposes only kind: 'script' and url; script format handling is internal to manifest rendering. (1.170.8) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.8)

### Security

- Navigation and redirect destinations are validated; ambiguous relative URLs remain on the current origin. (1.170.32) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.32)

### New APIs and options

- Rsbuild client output supports module output by default and IIFE output for classic script environments. (1.170.8) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.8)

### Performance

- Pending link preload timers are canceled when navigation starts, avoiding redundant preloading while the destination is loading. (1.170.39) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.39)
- Solid Links reuse the router's built destination and derive state through fewer reactive nodes; they also resolve props through one reactive memo, making mounting and updating many Links slightly faster. (1.170.39) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.39)
- Skips unused Link preload cleanup when preloading is disabled. (1.170.37) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.37)
- Link reduces bundle size by sharing active-path checks and resolving only the selected active or inactive props, while avoiding unnecessary class/style allocations. (1.170.34) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.34)
- Server-rendered links skip client-only hydration, preloading, observer, and event-handler setup. (1.170.33) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.33)

### Behavior and default changes

- Warns when an Outlet is rendered inside a pending, error, or not-found component. (1.170.25) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.25)
- Client entry scripts and preloads are represented as root route manifest assets. (1.170.8) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.8)

### Fixes and other changes

- Builds mask and routeMasks locations from the same _fromLocation as the destination. (1.170.39) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.39)
- Links of a route left by pending navigation skip deriving the destination location, and clicks and preloads follow the href displayed by the Link. (1.170.39) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.39)
- Solid Links call a user ref once per element and create no reactive nodes on the server. (1.170.39) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.39)
- Ignores queued viewport notifications after their effect has been cleaned up. (1.170.37) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.37)
- Router requests whose `Accept` header allows neither `text/html` nor `*/*` now receive `406 Not Acceptable` instead of `500`. (1.170.35) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.35)
- Solid SSR renders late lazy errors through route boundaries. (1.170.35) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.35)
- Solid SSR now emits one document type. (1.170.35) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.35)
- Active and inactive Link props can override base element props, but Solid's computed href, target, and disabled values remain authoritative when state props contain routing options; class/style merging is preserved. (1.170.34) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.34)
- Avoids duplicate external script execution when a Solid script has both src and children. (1.170.33) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.33)
- Prerender requests and output paths are constrained. (1.170.32) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.32)
- Explicit redirect Location headers take precedence over route options. (1.170.32) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.32)
- Redirect headers no longer appear in serialized server function response bodies. (1.170.32) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.32)
- Successful not-found matches remain terminal shared boundaries during client navigation, preserving route context while the destination loads. (1.170.31) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.31)
- Structural descendants below error and not-found boundaries are excluded from route lifecycle callbacks, while lifecycle membership is preserved through invalidation, hydration, background reloads, and superseded navigation publication. (1.170.31) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.31)
- SSR wraps non-Error loader errors to match Solid’s native boundary behavior, preserving the original value in cause; router state and loader onError values are unchanged. (1.170.31) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.31)
- Absolute URL checks in links, navigation, redirects, and build configuration use URL.canParse, with a URL constructor fallback for older browsers. (1.170.31) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.31)
- The route-scoped API now forwards shouldThrow and preserves optional return types when shouldThrow is false. (1.170.31) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.31)
- Context is preserved during reloads. (1.170.30) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.30)
- Pending UI is preserved across retained routes. (1.170.28) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.28)
- Resolved lazy route components are reused when revisiting code-split routes, preventing unnecessary pending UI. (1.170.26) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.26)
- Applies preloadDelay to viewport link preloading and cancels pending preloads when links leave the viewport. (1.170.25) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.25)
- Path parameters are preserved in their raw string form while matching, so structured values returned by params.parse produce stable match IDs and do not reuse stale loader data. (1.170.21) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.21)
- The documented default now matches the existing runtime default of 5 minutes (300_000). (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- Route headers() now runs only on the server and is no longer invoked during client-side asset projection. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- The client no longer reruns work already completed by the server during hydration. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- Invalidation retires matching active preloads so older speculative loader results cannot become fresh cache data afterward. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- Match loading now uses a lane-based scheduler that tracks each navigation, preload, and background reload as ordered work, preventing state from leaking between overlapping navigations. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- Redirect, error, and not-found responses now receive correct SSR status codes. (1.170.19) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.19)
- Fixes search middleware composition so retainSearchParams does not restore search params removed by a downstream stripSearchParams. (1.170.13) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.13)
- Fixed streaming behavior. (1.170.9) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.9)
- Script preloads follow the manifest script format. (1.170.8) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.8)
- Script asset cross-origin configuration uses the script key. (1.170.8) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.8)
- Hash navigation is no longer overridden by stale scroll restoration entries. (1.170.6) — [release notes](https://github.com/TanStack/router/releases/tag/%40tanstack/solid-router%401.170.6)
