deckardger/tanstack-integration-best-practices
Best practices for integrating TanStack Query with TanStack Router and TanStack Start. Patterns for full-stack data flow, SSR, and caching coordination.
npx skills add https://github.com/DeckardGer/tanstack-agent-skills --skill tanstack-integration-best-practices
Guidelines for integrating TanStack Query, Router, and Start together effectively. These patterns ensure optimal data flow, caching coordination, and type safety across the stack.
| Priority | Category | Rules | Impact |
|----------|----------|-------|--------|
| CRITICAL | Setup | 3 rules | Foundational configuration |
| CRITICAL | SSR Integration | 1 rule | Router + Query SSR setup |
| HIGH | Data Flow | 4 rules | Correct data fetching patterns |
| MEDIUM | Caching | 3 rules | Performance optimization |
| MEDIUM | SSR | 2 rules | Additional SSR patterns |
setup-)setup-query-client-context — Pass QueryClient through router contextsetup-provider-wrapping — Correctly wrap with QueryClientProvidersetup-stale-time-coordination — Coordinate staleTime between router and queryflow-)flow-loader-query-pattern — Use loaders with ensureQueryDataflow-suspense-query-component — Use useSuspenseQuery in componentsflow-mutations-invalidation — Coordinate mutations with query invalidationflow-server-functions-queries — Use server functions for query functionscache-)cache-single-source — Let TanStack Query manage cachingcache-preload-coordination — Coordinate preloading between router and querycache-invalidation-patterns — Unified invalidation patternsssr-)ssr-dehydrate-hydrate — Use setupRouterSsrQueryIntegration for automatic SSRssr-)ssr-per-request-client — Create QueryClient per requestssr-streaming-queries — Handle streaming with queriesEach rule file in the rules/ directory contains:
See individual rule files in rules/ directory for detailed guidance and code examples.
Take deckardger/tanstack-integration-best-practices from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.