<Suspense>
1import { Suspense } from 'react'; 2 3export default function Page() { 4 return ( 5 <div> 6 {/* Shell renders immediately */} 7 <h1>Dashboard</h1> 8 {/* Each Suspense boundary streams independently */} 9 // !mark 10 <Suspense fallback={<FastSkeleton />}> 11 <FastComponent /> 12 </Suspense> 13 // !mark 14 <Suspense fallback={<SlowSkeleton />}> 15 <SlowComponent /> 16 </Suspense> 17 </div> 18 ); 19} 20 21async function SlowComponent() { 22 const data = await fetchSlowData(); // 3 seconds 23 return <div>{data}</div>; 24}
Multiple boundaries stream in parallel without blocking each other.
What you’re seeing
Each card below is a Server Component wrapped in a separate <Suspense> boundary. They resolve at different speeds and stream into the page as soon as they’re ready.
How to read this
Expected order
Streaming timeline (relative)