React Suspense
Возможность React для декларативного описания состояния загрузки: <Suspense fallback={<Spinner />}><DataComponent /></Suspense>. Дочерний компонент может «приостановиться», бросив Promise, — пока он не выполнится, показывается fallback. Стабильна с React 18.
Применяется для ленивых маршрутов (React.lazy()), загрузки данных (Relay, SWR, TanStack Query) и потоковой отдачи серверных компонентов. Границы Suspense вкладываются: внешняя показывает общую заглушку, внутренние — потоково подгружают отдельные секции. Отсюда селективная гидратация: сервер стримит HTML, клиент гидратирует компоненты по приоритету, видимые — первыми. Трудности миграции: старый подход (useEffect + setState) о Suspense ничего не знает и требует ручной обёртки. Аналоги есть у Vue, Solid и Svelte.