import { QueryClient } from '@tanstack/react-query'; /** * QueryClient configuration for TanStack Query * * Default options: * - staleTime: 5 minutes (data considered fresh) * - gcTime: 10 minutes (garbage collection time - unused data kept in cache) * - refetchOnWindowFocus: true (refetch when window regains focus) * - retry: 3 attempts with exponential backoff * * @returns Configured QueryClient instance */ export const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 5 * 60 * 1000, // 5 minutes gcTime: 10 * 60 * 1000, // 10 minutes (replaces cacheTime in v5) refetchOnWindowFocus: true, // Refetch when user returns to tab refetchOnReconnect: true, // Refetch when network reconnects retry: 3, // Retry failed requests 3 times retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000), }, mutations: { retry: 1, // Retry mutations once }, }, });