import { QueryClient } from '@tanstack/react-query'; import { CACHE_CONFIG } from './config'; import { shouldRetry } from './errors'; export const queryClient = new QueryClient({ defaultOptions: { queries: { // Time in milliseconds that unused/inactive cache data remains in memory gcTime: CACHE_CONFIG.GC_TIME, // Time in milliseconds after data is considered stale staleTime: CACHE_CONFIG.STALE_TIME, // Retry failed requests using centralized logic retry: (failureCount, error: unknown) => shouldRetry(error, failureCount), // Refetch on window focus refetchOnWindowFocus: false, // Refetch on reconnect refetchOnReconnect: true, }, mutations: { // Retry failed mutations using centralized logic retry: (failureCount, error: unknown) => shouldRetry(error, failureCount) && failureCount < CACHE_CONFIG.RETRY.MAX_MUTATION_RETRIES, }, }, });