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

Continue with TanStack Router

Save the full cheat sheet or work through every related task.

More React tasks

Back to the full TanStack Router cheat sheet