tanstack-query-best-practices
373
总安装量
372
周安装量
#739
全站排名
安装命令
npx skills add https://github.com/deckardger/tanstack-agent-skills --skill tanstack-query-best-practices
Agent 安装分布
opencode
255
claude-code
222
codex
209
github-copilot
184
cursor
161
Skill 文档
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.