TanStack Query setup for offline caching
Code snippet to easily setup offline caching for TanStack Query in a React Native app.
import { persister } from "@/lib/mmkv";import { QueryClient, onlineManager } from "@tanstack/react-query";import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";import { useEffect, type PropsWithChildren } from "react";import { useReactQueryDevTools } from "@dev-plugins/react-query";import NetInfo from "@react-native-community/netinfo";
const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: Number.POSITIVE_INFINITY, gcTime: Number.POSITIVE_INFINITY, }, },});
export function QueryProvider({ children }: PropsWithChildren) { useReactQueryDevTools(queryClient);
useEffect(() => { return NetInfo.addEventListener((state) => { const status = !!state.isConnected; onlineManager.setOnline(status); }); }, []);
return ( <PersistQueryClientProvider client={queryClient} onSuccess={() => queryClient .resumePausedMutations() .then(() => queryClient.invalidateQueries()) } persistOptions={{ persister, maxAge: Number.POSITIVE_INFINITY }} > {children} </PersistQueryClientProvider> );}