Files
flyer-crawler.projectium.com/src/config/queryClient.ts
Torben Sorensen d356d9dfb6
Some checks failed
Deploy to Test Environment / deploy-to-test (push) Failing after 43s
claude 1
2026-01-08 07:47:29 -08:00

54 lines
1.6 KiB
TypeScript

// src/config/queryClient.ts
import { QueryClient } from '@tanstack/react-query';
import { logger } from '../services/logger.client';
/**
* Global QueryClient instance for TanStack Query.
*
* Configured with sensible defaults for the flyer-crawler application:
* - 5 minute stale time for most queries
* - 30 minute garbage collection time
* - Single retry attempt on failure
* - No automatic refetch on window focus (to reduce API load)
* - Refetch on component mount for fresh data
*
* @see https://tanstack.com/query/latest/docs/reference/QueryClient
*/
export const queryClient = new QueryClient({
defaultOptions: {
queries: {
// Data is considered fresh for 5 minutes
staleTime: 1000 * 60 * 5,
// Unused data is garbage collected after 30 minutes
// (gcTime was formerly called cacheTime in v4)
gcTime: 1000 * 60 * 30,
// Retry failed requests once
retry: 1,
// Don't refetch on window focus to reduce API calls
// Users can manually refresh if needed
refetchOnWindowFocus: false,
// Always refetch on component mount to ensure fresh data
refetchOnMount: true,
// Don't refetch on reconnect by default
refetchOnReconnect: false,
},
mutations: {
// Don't retry mutations automatically
// User actions should be explicit
retry: 0,
// Log mutation errors for debugging
onError: (error) => {
logger.error('Mutation error', {
error: error instanceof Error ? error.message : 'Unknown error',
});
},
},
},
});