🚀 React 19Основной акцент сделан на улучшении DX и упрощении работы с асинхронным состоянием. Также всё больше внимания уделяется серверному рендерингу. В целом, обновления не приведут к большим изменениям в коде, но сделают его чище.
Подробнее, что нового и как обновиться?🔧 React CompilerReact Compiler — это инструмент для автоматической оптимизации кода. Он ускоряет рендеринг и уменьшает нагрузку на браузер. Благодаря компилятору многие оптимизации, вроде мемоизирования теперь выполняются автоматически. Ждём доклады о том, как он работает под капотом.
⚡️Actions и асинхронное управление состояниемActions позволяют управлять состоянием асинхронных операций, что избавляет нас от необходимости вручную обрабатывать pending-состояния, ошибки и оптимистичные обновления.
⚙️ Хук useActionState Удобный способ отслеживать состояний Actions. Возвращает объект вида
{ pending: false, error: false }
с текущим состоянием формы.
🔄 Хук useOptimisticУправляет оптимистичным обновлением данных. Изменения происходят моментально, а в случае неудачи откатываются назад.
📋 Хук useFormStatusПозволяет отслеживать состояния формы, теперь компонентом вашей дизайн системы не нужен для этого Context.
🌀 Хук useTransition (добавлен в react v18, активно используется с actions)
Больше не нужно вручную управлять состоянием isLoading
const [isLoading, startTransition] = useTransition();
🔑 Новый API: useuse
- удобная работа с асинхронностью внутри компонента. Вы можете прочесть
promise const comments = use(commentsPromise);
react дождётся его выполнения, после чего отрисует. В это время можно отрисовать loader с помощью Suspence.
📂 React DOM и Actions в формахФормы в React стали умнее. Теперь можно использовать функции в
action
или
formAction
, а также автоматически сбрасывать состояние формы после успешной отправки.
📈 Новые статические APIДобавлены новые API в
react-dom/static• prerender•
prerenderToNodeStreamОни улучшают
renderToString, ожидая загрузки данных для генерации статического HTML. Предназначены для работы с потоковыми средами, такими как Node.js Streams и Web Streams. Например, в web streams среде вы можете пререндерить дерево React в статический HTML с помощью
prerender
.
🌐 React Server Components и Server ActionsServer Components позволяет пререндерить часть вашего кода в CI или при каждом запросе к серверу, что улучшает перфоманс клиентского приложения.
Server Actions позволяют вызывать асинхронные функции на сервере прямо из компонентов.
📊 Улучшения в React 19• Передача ref как пропса: Теперь можно передавать
ref напрямую через пропсы без
forwardRef.
• Ошибки гидратации: React показывает точные диффы при ошибках гидратации, что упрощает отладку.
• Контекст как провайдер: Теперь
<Context>
можно использовать как провайдер (
Context.Provider не нужен)
• Функции очистки для refs: Подержка возврата функции очистки из ref колбэка.
• useDeferredValue с начальным значением: Добавлен
initialValue для
useDeferredValue:
🌍 React 19 расширяет поддержку современных стандартов:• Поддержка метаданных документа: Теперь можно использовать тэги
<title>,
<meta>,
<link> в вашем компоненте, они будут автоматически перемещены в
<head>.
• Стили и скрипты: Также для тэгов
<script> и
<link rel="stylesheet"> можно задать приоритет
precedence, что позволяет управлять последовательностью их подключения. Это важно т.к. последовательность подключения влияет на отображаемые результат.
• Поддержка Custom Elements: React теперь лучше работает с Web Components.
🔄 Как обновиться?Обновление на React 19 должно быть достаточно простым, подробнее читайте в миграционном гайде с изменения и кодмодами. Рекомендую прежде обновиться на React 18.3, чтобы увидеть предупреждения о возможных несовместимостях.
Подробнее обо всём с примерами кода в официальной статье о релизе react 19.
P.S. А вы уже завели тасочку на обновление?