tanstack-query

TanStack Query

Async state management and data fetching

Details

Language / Topic
javascriptJavaScript
Category
Libraries

Rules

balanced
- Use `useQuery` for GET requests and `useMutation` for POST/PUT/DELETE. Define query keys as arrays.
- Invalidate related queries after mutations with `queryClient.invalidateQueries({ queryKey: [...] })`.
- Set `staleTime` appropriately per query — 0 (default) refetches on every mount, `Infinity` caches forever until manual invalidation.
- Structure query keys hierarchically: `["users"]`, `["users", userId]`, `["users", userId, "posts"]`.
- Use `queryFn` to wrap your API client — keep TanStack Query as the caching layer, not the fetcher.
- Use `staleTime` to control refetch frequency. Set app-wide defaults in `QueryClient`.
- Use `enabled` option to conditionally disable queries (e.g., wait for auth, dependent queries).