You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow useLinkStatus to be used in dashboards that rely on the router to update searchParams, with a simple loading fallback.
Centralize the "pending" status in a single place, similar to tracking soft navigation status.
Eliminate the need for router-related workarounds while still keeping the link behavior intact.
Non-Goals
Does not intend to change any behavior of the standard component — this is purely an alternative for cases where navigation is handled via the router.
Background
In applications with complex dashboard interfaces, it's common to handle navigation through the router (e.g., updating searchParams) instead of using traditional components. While this approach provides flexibility, it lacks a consistent way to track the pending state of these navigations — something that useLinkStatus handles elegantly for elements.
Currently, developers are forced to implement custom loading logic or rely on workarounds to replicate the same behavior, which can lead to inconsistencies and increased complexity. Having an official, unified way to track soft navigation status — even when not using — would simplify implementations, improve UX consistency, and reduce boilerplate.
There are no built-in alternatives that offer this level of integration and standardization when navigation is initiated manually via the router.
Proposal
This feature could be implemented by exposing a hook similar to useLinkStatus, but decoupled from the component — allowing it to subscribe to the same internal transition or navigation state used during soft navigations triggered via the router.
Ideally, this hook would work seamlessly with startTransition or similar mechanisms used under the hood, and provide a straightforward way to determine whether a navigation is pending, succeeded, or failed — regardless of whether it originated from a or a router.push.
Yes, I would be interested in contributing to this feature.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Goals
Non-Goals
Background
In applications with complex dashboard interfaces, it's common to handle navigation through the router (e.g., updating searchParams) instead of using traditional components. While this approach provides flexibility, it lacks a consistent way to track the pending state of these navigations — something that useLinkStatus handles elegantly for elements.
Currently, developers are forced to implement custom loading logic or rely on workarounds to replicate the same behavior, which can lead to inconsistencies and increased complexity. Having an official, unified way to track soft navigation status — even when not using — would simplify implementations, improve UX consistency, and reduce boilerplate.
There are no built-in alternatives that offer this level of integration and standardization when navigation is initiated manually via the router.
Proposal
This feature could be implemented by exposing a hook similar to useLinkStatus, but decoupled from the component — allowing it to subscribe to the same internal transition or navigation state used during soft navigations triggered via the router.
Ideally, this hook would work seamlessly with startTransition or similar mechanisms used under the hood, and provide a straightforward way to determine whether a navigation is pending, succeeded, or failed — regardless of whether it originated from a or a router.push.
Yes, I would be interested in contributing to this feature.
Beta Was this translation helpful? Give feedback.
All reactions