npm / @solidjs/router
@solidjs/router
What changed in @solidjs/router 0.16 to 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-24.
3 breaking1 security1 new APIs and options2 behavior and defaults8 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@solidjs/router 12 changes
Behavior and default changes 1
The router is declared stable as 1.0.0; ^1.0.0 receives normal caret semantics, and the major number aligns with the ecosystem.
Fixes and other changes 1
Scroll restoration now performs a single scroll once routing settles; content that commits afterward keeps whatever offset the document can hold.
@solidjs/router 0.1613 changes
Breaking changes 3
Paths with doubled slashes no longer match collapsed routes and render the not-found state; doubled leading slashes are parsed rather than treated as protocol-relative URLs.
Forces a cache miss synchronously, so a same-tick refetch after an un-awaited revalidate fetches fresh data.
Static path segments no longer percent-encode RFC 3986 pchar characters, allowing routes such as /+foo and /@user to match the browser's raw pathname.
Security 1
Returns a copy so mutations by callers cannot corrupt router state.
New APIs and options 1
Adds opt-in explicit scroll restoration for back/forward navigation, persisting and restoring positions after navigation settles; off by default.
Behavior and default changes 1
The data generic now defaults to any so typed components and preload functions are assignable in annotated configs without a generic inference site.
Fixes and other changes 7
The active state ignores trailing slashes on href.
Disposing an older owner no longer unregisters a newer action bound to the same URL, preventing forms from falling through to native submission after revalidation.
Per-route roots are disposed when the route tree unmounts, preventing leaked subscriptions from crashing on later navigation.
Route components accept VoidComponent pages while still rejecting components that require props the router does not pass.
Consecutive synchronous calls now compose by merging into the in-flight navigation target instead of the stale committed location.
Listeners now observe defaultPrevented when another listener has set it.
useSubmission().retry now retries instead of being a no-op.