Query Docs
Examples
- Simple
- Basic
- Basic w/ GraphQL-Request
- Auto Refetching / Polling / Realtime (Next.js Pages Router)
- Optimistic Updates (Next.js App Router)
- Pagination (Next.js Pages Router)
- Load-More & Infinite Scroll (Next.js Pages Router)
- Infinite query with Max pages (Next.js Pages Router)
- Suspense
- Default Query Function
- Playground
- Prefetching (Next.js Pages Router)
- Star Wars (React Router)
- Rick And Morty (React Router)
- Next.js Pages
- Next.js app with prefetching
- Next.js app with streaming
- React Native
- React Router
- Offline Queries and Mutations
- Algolia
- Shadow DOM
- Devtools Embedded Panel
- Chat example (streaming)
- Batching
React Example: Nextjs App Optimistic Updates
import React from 'react'
import { HydrationBoundary, dehydrate, noop } from '@tanstack/react-query'
import { todosQueries } from '../services/todos/queries'
import { getQueryClient } from '@/app/get-query-client'
import { getTodos } from '@/app/api/todos/data'
import ApproachTabs from '@/components/ApproachTabs'
export default function Home() {
const queryClient = getQueryClient()
void queryClient
.query({
...todosQueries.list(),
queryFn: getTodos,
})
.catch(noop)
return (
<main style={{ maxWidth: 600, margin: '0 auto', padding: '2rem 1rem' }}>
<h1>Optimistic Updates with TanStack Query</h1>
<p style={{ color: '#666', marginBottom: '1.5rem' }}>
Add todos to see optimistic updates in action. The server randomly fails
~30% of the time so you can observe automatic rollback.
</p>
<HydrationBoundary state={dehydrate(queryClient)}>
<React.Suspense fallback={<p>Loading todos…</p>}>
<ApproachTabs />
</React.Suspense>
</HydrationBoundary>
</main>
)
}