Tanstack query architecture
Skill meyverick/agy-skills/skills/tanstack-query-architecture
Architects robust server state management using TanStack Query. Use when configuring caching TTLs, optimistic updates, and SSR hydration.From its SKILL.md
npx -y skills add meyverick/agy-skills --skill tanstack-query-architectureAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.5 KB, 548 tokens by cl100k_base, as published. Nobody here has run it
TanStack Query Architecture
This skill manages server state using TanStack Query (React Query / Svelte Query). It ensures aggressive caching, prevents unnecessary network spam, and governs strict optimistic UI updates.
When to Use
- Use when fetching, caching, synchronizing, or updating server state in frontend frameworks.
- Use when implementing infinite scrolling or paginated data fetching.
- NOT for global client state (like a dark mode toggle); use standard Context/Stores for that.
Core Process
Phase 1: Query Keys & Caching
- Treat Query Keys strictly as dependency arrays. If the query function relies on a variable (e.g.,
userId), that variable MUST be in the query key array['user', userId]. - Define explicit
staleTimeandgcTime. The defaultstaleTimeis 0, which means every re-render causes a background fetch. Configure this to a sensible default (e.g.,1000 * 60 * 5for 5 minutes).
Phase 2: Optimistic Updates
- When mutating data, update the UI immediately before the server responds to create a fast UX.
- In the
onMutatecallback, cancel outgoing queries for that key, snapshot the previous value, and manually set the query data usingqueryClient.setQueryData. - In
onError, rollback the cache to the snapshot.
Phase 3: SSR Hydration
- When using Next.js or SvelteKit, fetch data on the server during SSR and use
HydrationBoundaryordehydrate()to pass the cache to the client to prevent a loading spinner on the initial paint.
Common Rationalizations
| Rationalization | Reality |
|---|---|
"I'll use a useEffect to fetch data and store it in React State." | useEffect for data fetching causes race conditions, lack of caching, and duplicate requests. TanStack Query replaces it entirely. |
| "I don't need optimistic updates, the API is fast." | Network latency is unpredictable. Optimistic updates are mandatory for a premium, snappy UX. |
Red Flags
- Utilizing
useEffector Svelte$effectto perform rawfetchcalls. - Missing
staleTimeconfiguration onQueryClient, causing massive API spam.
Verification
Before finalizing the query architecture:
- All API fetches occur exclusively through
useQueryorcreateQuery. - Mutations implement optimistic cache updates and rollback mechanisms.
- Query keys correctly reflect all variables used inside the fetch function.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.