advanced
Streaming
Отправляйте shell и готовые сегменты через Suspense boundaries для улучшения perceived latency.
Streaming отдаёт shell маршрута рано и сбрасывает готовые сегменты по мере resolve async Server Components. `loading.tsx` и Suspense boundaries задают, что видит пользователь при медленной загрузке данных.
export default function Page() {
return (
<>
<Header />
<Suspense fallback={<Skeleton />}>
<SlowRecommendations />
</Suspense>
</>
);
}
Streaming улучшает perceived latency без ожидания самого медленного fetch для всей страницы.
На интервью: shell-first delivery, размещение boundaries и обработка ошибок во вложенном Suspense.
Типовые ошибки: один гигантский async page без boundaries, streaming контента, который должен быть static, waterfalls между независимыми данными.
Компромисс: сложность дизайна boundaries против лучшего TTFB и progressive paint.
Чеклист:
- Медленные server components в Suspense.
- Быстрый above-the-fold shell.
- error.tsx для сбоев сегмента.
- Без serial await независимых данных.