tanstack-query-best-practices
deckardger/tanstack-agent-skills
TanStack Query best practices for optimized data fetching, caching, and server state management in React.
What is tanstack-query-best-practices?
Comprehensive guidelines for implementing TanStack Query (React Query) patterns in React applications. Covers query keys, caching strategies, mutations, error handling, prefetching, infinite queries, SSR integration, and performance optimization. Use when building data-driven React apps with server state management.
- Provides 32+ best-practice rules organized by priority (Critical, High, Medium, Low)
- Covers query key structure and hierarchical organization to prevent cache bugs
- Defines caching strategies including staleTime, gcTime, and targeted invalidation
- Implements mutation patterns with optimistic updates and rollback handling
- Guides error handling, retry configuration, and error boundaries
- Enables prefetching strategies for improved perceived performance
How to install tanstack-query-best-practices
npx skills add https://github.com/deckardger/tanstack-agent-skills --skill tanstack-query-best-practices- React application with TanStack Query (React Query) installed
- Understanding of React hooks and component lifecycle
- Familiarity with async data fetching concepts
How to use tanstack-query-best-practices
- 1.Review the rule categories table to understand priority levels and impact areas
- 2.Identify which rule categories apply to your current implementation (queries, mutations, caching, etc.)
- 3.Consult individual rule files in the rules/ directory for detailed explanations
- 4.Compare bad examples against your current code patterns
- 5.Implement the recommended good examples in your application
- 6.Apply rules progressively, starting with CRITICAL priority rules
- 7.Test caching behavior and data consistency after applying rules
Use cases
- Setting up query configurations and cache strategies for new React applications
- Implementing mutations with optimistic updates for responsive user interfaces
- Configuring prefetching on user intent (hover, focus) and route transitions
- Integrating TanStack Query with server-side rendering and hydration
- Refactoring existing data fetching code to follow best practices
- React developers building data-driven applications
- Frontend engineers implementing server state management
- Teams adopting TanStack Query for the first time
- Developers optimizing existing React Query implementations
- Full-stack developers working with SSR/SSG patterns
tanstack-query-best-practices FAQ
staleTime determines how long data is considered fresh before a background refetch; gcTime (formerly cacheTime) determines how long inactive queries are retained in memory before garbage collection.
Use optimistic updates for mutations that are likely to succeed (e.g., form submissions, toggles) to provide instant UI feedback, but always implement rollback logic in case the mutation fails.
Use array-based hierarchical query keys that include all dependencies, implement targeted query invalidation after mutations, and use query key factories for complex applications.
HydrationBoundary wraps your app during SSR to properly hydrate cached query data from the server, ensuring client-side queries match server state and preventing hydration mismatches.
Configure the network mode setting and implement query persistence to cache data locally, allowing your app to serve stale data when offline and sync when connectivity returns.
Full instructions (SKILL.md)
Source of truth, from deckardger/tanstack-agent-skills.
name: tanstack-query-best-practices description: TanStack Query (React Query) best practices for data fetching, caching, mutations, and server state management. Activate when building data-driven React applications with server state.
TanStack Query Best Practices
Comprehensive guidelines for implementing TanStack Query (React Query) patterns in React applications. These rules optimize data fetching, caching, mutations, and server state synchronization.
When to Apply
- Creating new data fetching logic
- Setting up query configurations
- Implementing mutations and optimistic updates
- Configuring caching strategies
- Integrating with SSR/SSG
- Refactoring existing data fetching code
Rule Categories by Priority
| Priority | Category | Rules | Impact |
|---|---|---|---|
| CRITICAL | Query Keys | 5 rules | Prevents cache bugs and data inconsistencies |
| CRITICAL | Caching | 5 rules | Optimizes performance and data freshness |
| HIGH | Mutations | 6 rules | Ensures data integrity and UI consistency |
| HIGH | Error Handling | 3 rules | Prevents poor user experiences |
| MEDIUM | Prefetching | 4 rules | Improves perceived performance |
| MEDIUM | Parallel Queries | 2 rules | Enables dynamic parallel fetching |
| MEDIUM | Infinite Queries | 3 rules | Prevents pagination bugs |
| MEDIUM | SSR Integration | 4 rules | Enables proper hydration |
| LOW | Performance | 4 rules | Reduces unnecessary re-renders |
| LOW | Offline Support | 2 rules | Enables offline-first patterns |
Quick Reference
Query Keys (Prefix: qk-)
qk-array-structure— Always use arrays for query keysqk-include-dependencies— Include all variables the query depends onqk-hierarchical-organization— Organize keys hierarchically (entity → id → filters)qk-factory-pattern— Use query key factories for complex applicationsqk-serializable— Ensure all key parts are JSON-serializable
Caching (Prefix: cache-)
cache-stale-time— Set appropriate staleTime based on data volatilitycache-gc-time— Configure gcTime for inactive query retentioncache-defaults— Set sensible defaults at QueryClient levelcache-invalidation— Use targeted invalidation over broad patternscache-placeholder-vs-initial— Understand placeholder vs initial data differences
Mutations (Prefix: mut-)
mut-invalidate-queries— Always invalidate related queries after mutationsmut-optimistic-updates— Implement optimistic updates for responsive UImut-rollback-context— Provide rollback context from onMutatemut-error-handling— Handle mutation errors gracefullymut-loading-states— Use isPending for mutation loading statesmut-mutation-state— Use useMutationState for cross-component tracking
Error Handling (Prefix: err-)
err-error-boundaries— Use error boundaries with useQueryErrorResetBoundaryerr-retry-config— Configure retry logic appropriatelyerr-fallback-data— Provide fallback data when appropriate
Prefetching (Prefix: pf-)
pf-intent-prefetch— Prefetch on user intent (hover, focus)pf-route-prefetch— Prefetch data during route transitionspf-stale-time-config— Set staleTime when prefetchingpf-ensure-query-data— Use ensureQueryData for conditional prefetching
Infinite Queries (Prefix: inf-)
inf-page-params— Always provide getNextPageParaminf-loading-guards— Check isFetchingNextPage before fetching moreinf-max-pages— Consider maxPages for large datasets
SSR Integration (Prefix: ssr-)
ssr-dehydration— Use dehydrate/hydrate pattern for SSRssr-client-per-request— Create QueryClient per requestssr-stale-time-server— Set higher staleTime on serverssr-hydration-boundary— Wrap with HydrationBoundary
Parallel Queries (Prefix: parallel-)
parallel-use-queries— Use useQueries for dynamic parallel queriesquery-cancellation— Implement query cancellation properly
Performance (Prefix: perf-)
perf-select-transform— Use select to transform/filter dataperf-structural-sharing— Leverage structural sharingperf-notify-change-props— Limit re-renders with notifyOnChangePropsperf-placeholder-data— Use placeholderData for instant UI
Offline Support (Prefix: offline-)
network-mode— Configure network mode for offline supportpersist-queries— Configure query persistence for offline support
How to Use
Each rule file in the rules/ directory contains:
- Explanation — Why this pattern matters
- Bad Example — Anti-pattern to avoid
- Good Example — Recommended implementation
- Context — When to apply or skip this rule
Full Reference
See individual rule files in rules/ directory for detailed guidance and code examples.
Related skills
More from deckardger/tanstack-agent-skills and the wider catalog.

tanstack-router-best-practices
Type-safe routing patterns and best practices for TanStack Router in React applications.

tanstack-start-best-practices
TanStack Start best practices for full-stack React: server functions, middleware, SSR, auth, and deployment.

tanstack-integration-best-practices
Best practices for coordinating TanStack Query, Router, and Start in full-stack applications.
mies
Ruthless reduction and exacting craft for user-facing interfaces, applying Mies van der Rohe restraint and anti-generic design discipline.

wonda-cli
Terminal toolkit for generating media and automating social research across LinkedIn, Reddit, and X/Twitter.

astro-framework
Astro framework specialist for fast, content-driven websites with islands architecture and hybrid rendering.