← ClaudeAtlas

tanstack-querylisted

Manage server state in React with TanStack Query v5. Covers useMutationState, simplified optimistic updates, throwOnError, network mode (offline/PWA), and infiniteQueryOptions. Use when setting up data fetching, fixing v4→v5 migration errors (object syntax, gcTime, isPending, keepPreviousData), or debugging SSR/hydration issues with streaming server components.
aiskillstore/marketplace · ★ 329 · Web & Frontend · score 82
Install: claude install-skill aiskillstore/marketplace
# TanStack Query (React Query) v5 **Last Updated**: 2026-01-20 **Versions**: @tanstack/react-query@5.90.19, @tanstack/react-query-devtools@5.91.2 **Requires**: React 18.0+ (useSyncExternalStore), TypeScript 4.7+ (recommended) --- ## v5 New Features ### useMutationState - Cross-Component Mutation Tracking Access mutation state from anywhere without prop drilling: ```tsx import { useMutationState } from '@tanstack/react-query' function GlobalLoadingIndicator() { // Get all pending mutations const pendingMutations = useMutationState({ filters: { status: 'pending' }, select: (mutation) => mutation.state.variables, }) if (pendingMutations.length === 0) return null return <div>Saving {pendingMutations.length} items...</div> } // Filter by mutation key const todoMutations = useMutationState({ filters: { mutationKey: ['addTodo'] }, }) ``` ### Simplified Optimistic Updates New pattern using `variables` - no cache manipulation, no rollback needed: ```tsx function TodoList() { const { data: todos } = useQuery({ queryKey: ['todos'], queryFn: fetchTodos }) const addTodo = useMutation({ mutationKey: ['addTodo'], mutationFn: (newTodo) => api.addTodo(newTodo), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['todos'] }) }, }) // Show optimistic UI using variables from pending mutations const pendingTodos = useMutationState({ filters: { mutationKey: ['addTodo'], status: 'pending' }, select: (mutation) => mu