useLinkStatus
API Reference for the useLinkStatus hook.
The useLinkStatus
hook lets you tracks the pending state of a <Link>
. You can use it to show inline visual feedback to the user (like spinners or text glimmers) while a navigation to a new route completes.
useLinkStatus
is useful when:
- Prefetching is disabled or in progress meaning navigation is blocked.
- The destination route is dynamic and doesn't include a
loading.js
file that would allow an instant navigation.
Good to know:
useLinkStatus
must be used within a descendant component of aLink
component- The hook is most useful when
prefetch={false}
is set on theLink
component - If the linked route has been prefetched, the pending state will be skipped
- When clicking multiple links in quick succession, only the last link's pending state is shown
- This hook is not supported in the Pages Router and will always return
{ pending: false }
Parameters
useLinkStatus
does not take any parameters.
Returns
useLinkStatus
returns an object with a single property:
Property | Type | Description |
---|---|---|
pending | boolean | true before history updates, false after |
Example
Inline loading indicator
It's helpful to add visual feedback that navigation is happening in case the user clicks a link before prefetching is complete.
Gracefully handling fast navigation
If the navigation to a new route is fast, users may see an unecessary flash of the loading indicator. One way to improve the user experience and only show the loading indicator when the navigation takes time to complete is to add an initial animation delay (e.g. 100ms) and start the animation as invisible (e.g. opacity: 0
).
Version | Changes |
---|---|
v15.3.0 | useLinkStatus introduced. |