AgentSkillsCN

tanstack-query-best-practices

掌握TanStack Query(React Query)在数据获取、缓存、变更操作与服务器状态管理方面的最佳实践。在构建具备服务器状态的数据驱动型React应用时启用此技能。

SKILL.md
--- frontmatter
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

PriorityCategoryRulesImpact
CRITICALQuery Keys5 rulesPrevents cache bugs and data inconsistencies
CRITICALCaching4 rulesOptimizes performance and data freshness
HIGHMutations3 rulesEnsures data integrity and UI consistency
HIGHError Handling1 rulePrevents poor user experiences
MEDIUMPrefetching1 ruleImproves perceived performance
MEDIUMParallel Queries2 rulesEnables dynamic parallel fetching
MEDIUMInfinite Queries1 rulePrevents pagination bugs
MEDIUMSSR Integration1 ruleEnables proper hydration
LOWPerformance1 ruleReduces unnecessary re-renders
LOWOffline Support2 rulesEnables offline-first patterns

Quick Reference

Query Keys (Prefix: qk-)

  • qk-array-structure — Always use arrays for query keys
  • qk-include-dependencies — Include all variables the query depends on
  • qk-hierarchical-organization — Organize keys hierarchically (entity → id → filters)
  • qk-factory-pattern — Use query key factories for complex applications
  • qk-serializable — Ensure all key parts are JSON-serializable

Caching (Prefix: cache-)

  • cache-stale-time — Set appropriate staleTime based on data volatility
  • cache-gc-time — Configure gcTime for inactive query retention
  • cache-invalidation — Use targeted invalidation over broad patterns
  • cache-placeholder-vs-initial — Understand placeholder vs initial data differences

Mutations (Prefix: mut-)

  • mut-invalidate-queries — Always invalidate related queries after mutations
  • mut-optimistic-updates — Implement optimistic updates for responsive UI
  • mut-mutation-state — Use useMutationState for cross-component tracking

Error Handling (Prefix: err-)

  • err-error-boundaries — Use error boundaries with useQueryErrorResetBoundary

Prefetching (Prefix: pf-)

  • pf-intent-prefetch — Prefetch on user intent (hover, focus)

Infinite Queries (Prefix: inf-)

  • inf-page-params — Always provide getNextPageParam

SSR Integration (Prefix: ssr-)

  • ssr-dehydration — Use dehydrate/hydrate pattern for SSR

When TanStack Router/Start are also in use, follow tanstack-integration rules (precedence-query-first, ssr-dehydrate-hydrate) for integration-specific SSR wiring and cache ownership.

Parallel Queries (Prefix: parallel-)

  • parallel-use-queries — Use useQueries for dynamic parallel queries
  • query-cancellation — Implement query cancellation properly

Performance (Prefix: perf-)

  • perf-select-transform — Use select to transform/filter data

Offline Support (Prefix: offline-)

  • network-mode — Configure network mode for offline support
  • persist-queries — Configure query persistence for offline support

How to Use

Each rule file in the rules/ directory contains:

  1. Explanation — Why this pattern matters
  2. Bad Example — Anti-pattern to avoid
  3. Good Example — Recommended implementation
  4. Context — When to apply or skip this rule

Full Reference

See individual rule files in rules/ directory for detailed guidance and code examples.