query-client.ts 812 B

1234567891011121314151617181920
  1. import { QueryClient } from '@tanstack/react-query'
  2. /**
  3. * Shared TanStack Query client for web + native.
  4. * Must be cleared on sign-out so list/membership caches cannot leak across accounts.
  5. */
  6. export const queryClient = new QueryClient({
  7. defaultOptions: {
  8. queries: {
  9. staleTime: 60 * 1000,
  10. // TanStack Query v4 name (`gcTime` is v5 and was silently ignored).
  11. cacheTime: 3 * 60 * 1000,
  12. refetchOnWindowFocus: false,
  13. // Default 3 retries, but not after a fetcher timeout: each retry would re-run the
  14. // same slow request (the fetcher has already waited `fetch_timeout_ms`).
  15. retry: (failureCount, error) =>
  16. (error as Error | undefined)?.message !== 'Timeout' && failureCount < 3,
  17. },
  18. },
  19. })