unstale

npm / @tanstack/vue-router

@tanstack/vue-router

What changed in @tanstack/vue-router 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-15.

6 breaking4 performance1 behavior and defaults20 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.3.1 on npm

@tanstack/vue-router 131 changes

Breaking changes 6

  • The internal helper is no longer exported.

    1.170.33release notes

  • The internal helper is no longer exported.

    1.170.33release notes

  • Navigation and redirect destinations are validated; ambiguous relative URLs stay on the current origin, and configured origins must already be normalized.

    1.170.31release notes

  • Vue error boundaries preserve falsy thrown values, and boundary error components and onCatch callbacks now receive errors typed as unknown. Narrow errors before reading message or stack.

    1.170.30release notes

  • Framework links no longer use a prebuilt-location argument; client preload locations are built on demand.

    1.170.29release notes

  • Active route components stay mounted by default when route params change.

    1.170.25release notes

Performance 4

  • Vue Links reuse the router's built destination across navigations and derive their state through fewer reactive nodes.

    1.170.38release notes

  • 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.33release notes

  • An unnecessary match Fragment is removed to reduce VNode allocation and transient JIT compilation memory while preserving route content and scroll restoration.

    1.170.33release notes

  • Vue links share normalized pathname comparisons to reduce bundle size.

    1.170.31release notes

Behavior and default changes 1

  • This setting is initialization-only: configure it when creating the router. Changing allowed characters requires a new router instance.

    1.170.33release notes

Fixes and other changes 20

  • Links for routes left by a pending navigation skip deriving the destination location, and clicks and preloads follow the displayed href. buildLocation builds mask and routeMasks locations from the same _fromLocation as the destination.

    1.170.38release notes

  • Pending link preload timers are canceled when navigation starts, avoiding redundant preloading while the destination is loading.

    1.170.38release notes

  • Skips unused Link preload cleanup when preloading is disabled.

    1.170.36release notes

  • Ignores queued viewport notifications after their effect has been cleaned up.

    1.170.36release notes

  • Router requests whose Accept header allows neither text/html nor */* now receive 406 Not Acceptable instead of 500.

    1.170.34release notes

  • Preserves native form HTTP redirects, route error handling, and masks for document redirects.

    1.170.31release notes

  • Prerender requests and output paths are constrained.

    1.170.31release notes

  • Explicit redirect Location headers are honored before route options are checked.

    1.170.31release notes

  • Redirect headers no longer appear in serialized server function response bodies.

    1.170.31release notes

  • Shared loader redirects retain per-navigation destinations.

    1.170.31release notes

  • Vue link state refreshes when destinations become internal.

    1.170.31release notes

  • Absolute URL checks in links, navigation, redirects, and build configuration use URL.canParse, with a URL constructor fallback for older browsers.

    1.170.30release notes

  • Successful not-found matches remain terminal shared boundaries during client navigation, preserving route context while the destination loads.

    1.170.30release notes

  • Structural descendants below error and not-found boundaries are excluded from lifecycle callbacks; lifecycle membership is preserved through invalidation, hydration, background reloads, and superseded navigation publication.

    1.170.30release notes

  • The route-scoped API now forwards shouldThrow and preserves optional return types when shouldThrow is false.

    1.170.30release notes

  • The route-scoped API now forwards shouldThrow and preserves optional return types when shouldThrow is false.

    1.170.30release notes

  • The route-scoped API now forwards shouldThrow and preserves optional return types when shouldThrow is false.

    1.170.30release notes

  • Context is preserved during reloads.

    1.170.29release notes

  • Pending UI is preserved across retained routes.

    1.170.27release notes

  • Resolved lazy route components are reused when revisiting code-split routes, preventing unnecessary pending UI.

    1.170.25release notes