๐ŸŽฏ

tanstack-react-query

๐ŸŽฏSkill

from gilbertopsantosjr/fullstacknextjs

VibeIndex|
What it does

Provides expert React Query guidance for efficient data fetching, mutations, and server state management with seamless server action integration.

๐Ÿ“ฆ

Part of

gilbertopsantosjr/fullstacknextjs(14 items)

tanstack-react-query

Installation

๐Ÿ“‹ No install commands found in docs. Showing default command. Check GitHub for actual instructions.
Quick InstallInstall with npx
npx skills add gilbertopsantosjr/fullstacknextjs --skill tanstack-react-query
3Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

TanStack React Query expert for data fetching and mutations in React applications. Use when working with useQuery, useMutation, cache invalidation, optimistic updates, query keys, or integrating server actions with React Query via @saas4dev/core hooks (useServerActionQuery, useServerActionMutation, useServerActionInfiniteQuery). Triggers on requests involving API data fetching, server state management, cache strategies, or converting fetch/useEffect patterns to React Query.

Overview

# TanStack React Query Expert

Expert guidance for idiomatic React Query (TanStack Query v5) patterns in React applications, with special focus on ZSA server action integration via @saas4dev/core.

Core Hooks

From @saas4dev/core (Server Actions)

```typescript

import {

useServerActionQuery,

useServerActionMutation,

useServerActionInfiniteQuery,

} from '@saas4dev/core'

```

From @tanstack/react-query (Direct API)

```typescript

import {

useQuery,

useMutation,

useInfiniteQuery,

useQueryClient,

} from '@tanstack/react-query'

```

Decision Tree

```

Need to fetch data?

โ”œโ”€โ”€ From server action โ†’ useServerActionQuery

โ”œโ”€โ”€ From REST/fetch directly โ†’ useQuery

โ””โ”€โ”€ Paginated/infinite โ†’ useServerActionInfiniteQuery or useInfiniteQuery

Need to modify data?

โ”œโ”€โ”€ From server action โ†’ useServerActionMutation

โ””โ”€โ”€ From REST/fetch directly โ†’ useMutation

After mutation, what cache behavior?

โ”œโ”€โ”€ Simple: just invalidate โ†’ queryClient.invalidateQueries()

โ”œโ”€โ”€ Update specific item โ†’ queryClient.setQueryData()

โ””โ”€โ”€ Need instant feedback โ†’ Optimistic update pattern

```

Quick Patterns

Server Action Query

```typescript

const { data, isLoading } = useServerActionQuery(listUsersAction, {

input: { status: 'active' },

queryKey: ['users', 'list', { status: 'active' }],

})

```

Server Action Mutation with Invalidation

```typescript

const queryClient = useQueryClient()

const mutation = useServerActionMutation(createUserAction, {

onSuccess: () => {

queryClient.invalidateQueries({ queryKey: ['users'] })

toast.success('User created')

},

onError: (error) => toast.error(error.message),

})

```

Optimistic Update

```typescript

const mutation = useServerActionMutation(updateTodoAction, {

onMutate: async (newData) => {

await queryClient.cancelQueries({ queryKey: ['todos', newData.id] })

const previous = queryClient.getQueryData(['todos', newData.id])

queryClient.setQueryData(['todos', newData.id], (old) => ({ ...old, ...newData }))

return { previous }

},

onError: (err, newData, context) => {

queryClient.setQueryData(['todos', newData.id], context?.previous)

},

onSettled: (data, err, variables) => {

queryClient.invalidateQueries({ queryKey: ['todos', variables.id] })

},

})

```

Query Key Structure

Hierarchy Pattern

```typescript

['entity'] // All of entity

['entity', 'list'] // All lists

['entity', 'list', { filters }] // Filtered list

['entity', 'detail', id] // Single item

['entity', id, 'nested'] // Nested resource

```

Query Key Factory

```typescript

export const userKeys = {

all: ['users'] as const,

lists: () => [...userKeys.all, 'list'] as const,

list: (filters: Filters) => [...userKeys.lists(), filters] as const,

details: () => [...userKeys.all, 'detail'] as const,

detail: (id: string) => [...userKeys.details(), id] as const,

}

```

Configuration Defaults

```typescript

const queryClient = new QueryClient({

defaultOptions: {

queries: {

staleTime: 60 * 1000, // 1 minute

gcTime: 5 60 1000, // 5 minutes

retry: 1,

refetchOnWindowFocus: false,

},

},

})

```

Best Practices

  1. Query Keys: Use hierarchical keys; invalidate broadly, fetch specifically
  2. Mutations: Always invalidate or update related queries on success
  3. Loading States: Use isLoading for first load, isFetching for background updates
  4. Error Handling: Handle in onError callback; show user-friendly messages
  5. Optimistic Updates: Use for high-confidence mutations; always implement rollback
  6. Conditional Queries: Use enabled option, not conditional hook calls
  7. Derived Data: Use select to transform data; keeps original in cache

References

Detailed patterns and examples:

  • [query-patterns.md](references/query-patterns.md): Query keys, useQuery, pagination, parallel/dependent queries
  • [mutation-patterns.md](references/mutation-patterns.md): Mutations, cache invalidation, optimistic updates, rollback
  • [advanced-patterns.md](references/advanced-patterns.md): Custom hooks, prefetching, SSR hydration, testing

Skill Interface

When using this skill, provide:

```json

{

"apiDescription": "REST/GraphQL endpoints, methods, parameters, response shapes",

"uiScenario": "What the UI needs (e.g., 'List with pagination', 'Edit form with instant feedback')",

"constraints": "React Query v5, fetch vs axios, suspense vs traditional",

"currentCode": "(optional) Existing code to improve"

}

```

Response includes:

  • recommendations: Query keys, hooks, invalidation strategy
  • exampleCode: React components/hooks demonstrating patterns
  • notes: Why these patterns were chosen

More from this repository10

๐ŸŽฏ
feature-architecture๐ŸŽฏSkill

Designs and structures feature-based architecture for scalable and modular Next.js applications with organized component and module layouts.

๐ŸŽฏ
feature module evaluator (next.js + dynamodb)๐ŸŽฏSkill

Evaluates and manages feature modules in a Next.js application with DynamoDB integration for dynamic feature tracking and configuration.

๐ŸŽฏ
bun-aws-lambda๐ŸŽฏSkill

Deploys and optimizes AWS Lambda functions using Bun runtime, enabling efficient serverless development with TypeScript support and multiple event source integrations.

๐ŸŽฏ
dynamodb-onetable๐ŸŽฏSkill

Simplifies DynamoDB interactions using the OneTable library for efficient, type-safe data modeling in Next.js applications.

๐ŸŽฏ
nextjs-web-client๐ŸŽฏSkill

Generates a Next.js web client with pre-configured routing, components, and server-side rendering for efficient full-stack application development.

๐ŸŽฏ
feature module generator (next.js + dynamodb)๐ŸŽฏSkill

Generates feature modules for Next.js applications with DynamoDB integration, streamlining backend and frontend component scaffolding.

๐ŸŽฏ
nextjs-server-actions๐ŸŽฏSkill

Implements server-side actions in Next.js for handling form submissions and data mutations with simplified server-client interactions.

๐ŸŽฏ
create-domain-module๐ŸŽฏSkill

Generates production-ready, state-isolated feature modules for Next.js with DynamoDB, following strict architectural principles and runtime-agnostic design.

๐ŸŽฏ
modularity-maturity-assessor๐ŸŽฏSkill

Evaluates modular architecture compliance across 10 principles, focusing on state isolation, service layers, runtime independence, and explicit communication for Next.js and DynamoDB projects.

๐ŸŽฏ
create-e2e-tests๐ŸŽฏSkill

Generates comprehensive e2e and integration tests with strict isolation, mocking cross-feature dependencies, and following modular testing principles for Next.js and DynamoDB projects.