Skip to main content


function useFetch(
endpoint: ReadEndpoint,
...args: Parameters<typeof endpoint> | [null]
): Promise<any> | undefined;

Great for retrieving resources optimistically before they are needed.

This can be useful for ensuring resources early in a render tree before they are needed.

Expiry StatusFetchReturnsConditions
Invalidyes1Promisenot in store, deletion, invalidation
Staleyes1Promise(first-render, arg change) & expiry < now
Validnoundefinedfetch completion
noundefinednull used as second argument
  1. Identical fetches are automatically deduplicated
React Native

When using React Navigation, useFetch() will trigger fetches on focus if the data is considered stale.


Use in combination with a data-binding hook (useCache(), useSuspense(), useDLE(), useLive()) in another component.

Conditional Dependencies

Use null as the second argument on any rest hooks to indicate "do nothing."

// todo could be undefined if id is undefined
const todo = useFetch(TodoResource.get, id ? { id } : null);



function MasterPost({ id }: { id: number }) {
useFetch(PostResource.get, { id });
// ...


function MasterPost({ id, doNotFetch }: { id: number; doNotFetch: boolean }) {
useFetch(PostResource.get, doNotFetch ? null : { id });
// ...

Useful Endpoints to send

Resource provides these built-in:

Feel free to add your own RestEndpoint as well.