Deferred Data Loading in React

From the TanStack Router cheat sheet · Data Loading · verified Jul 2026

Deferred Data Loading

Stream data and show content immediately

typescript
import { defer, Await } from '@tanstack/react-router'

export const Route = createFileRoute('/dashboard')({
  loader: () => {
    return defer({
      critical: fetchCriticalData(), // Awaited
      deferred: fetchSlowData(), // Streamed
    })
  },
  component: Dashboard,
})

function Dashboard() {
  const { critical, deferred } = Route.useLoaderData()

  return (
    <div>
      <h1>{critical.title}</h1>
      <Suspense fallback={<div>Loading...</div>}>
        <Await promise={deferred}>
          {(data) => <div>{data.content}</div>}
        </Await>
      </Suspense>
    </div>
  )
}
💡 defer() for non-critical data streaming
⚡ Show page immediately with critical data
🔍 Use Suspense for loading states
🎯 Great for improving perceived performance
deferstreamingsuspense

More React tasks

Back to the full TanStack Router cheat sheet