React 19: Асинхронные функции, серверные компоненты и поддержка пользовательских элементов

Команда Meta объявила о выпуске React 19, который стал важным шагом вперёд в развитии этой популярной библиотеки для создания пользовательских интерфейсов. Новый релиз принёс множество новшеств, упрощающих разработку, повышающих производительность и расширяющих функциональные возможности.

Асинхронность и улучшенные функции для форм

Одной из ключевых особенностей React 19 стала поддержка использования асинхронных функций в переходах. Это делает управление состояниями ожидания, обработку ошибок, работу с формами и оптимистичные обновления гораздо проще. Новые хуки — useOptimistic и React.useActionState — позволяют упрощать частые сценарии работы с Actions, устраняя необходимость в сложных ручных настройках.

Кроме того, React 19 предлагает интеграцию Actions с новым функционалом <form> в react-dom, что даёт возможность использовать хук useFormStatus для отслеживания состояния родительской формы как контекста.

Работа с серверными компонентами

Теперь Серверные компоненты и Actions официально включены в React 19. Это позволяет выполнять предварительный рендеринг компонентов на сервере и запускать асинхронные функции для клиентских компонентов. API use помогает считывать ресурсы во время рендеринга, что особенно полезно для статической генерации сайтов.

В react-dom/static появились новые возможности — API prerender и prerenderToNodeStream, которые упрощают процесс предварительного рендеринга.

Поддержка пользовательских элементов и улучшенные рефы

React 19 также принес полную поддержку пользовательских элементов (Custom Elements), успешно пройдя все тесты на Custom Elements Everywhere. Это делает работу с веб-компонентами ещё более гибкой.

Теперь функциям-компонентам доступен ref как проп, что упрощает управление ссылками на элементы. Также появилась поддержка возврата функций очистки (cleanup) из колбэков для рефов, что повышает читаемость и управляемость кода.

Другие новшества

  • Нативная поддержка мета-тегов для документов, включая асинхронные скрипты и предварительную загрузку ресурсов.
  • Улучшенная система отчётности об ошибках, включая детализированное логирование ошибок гидратации в react-dom.
  • Новый <DocumentMetadata /> компонент для управления мета-данными документа.

React 19 — это не просто обновление, а полноценный инструмент для упрощения работы разработчиков и реализации сложных, производительных приложений.

Читайте также
Конференция QCon: как бороться с поддельными ИИ-изображениями при помощи библиотек JavaScript
Конференция QCon: как бороться с поддельными ИИ-изображениями при помощи библиотек JavaScript
Конференция QCon: как бороться с поддельными ИИ-изображениями при помощи библиотек JavaScript

Силлс выступает за новую норму, согласно которой все реальные изображения должны иметь метку времени, достоверные метаданные и подтверждаться проверяемыми документами, которые гарантируют их подлинность. 

Shopify открывает Ruvy, инструментарий для создания Wasm-модулей из Ruby-кода
Shopify открывает Ruvy, инструментарий для создания Wasm-модулей из Ruby-кода
Shopify открывает Ruvy, инструментарий для создания Wasm-модулей из Ruby-кода

Ruvy от компании Spotify — это инструментарий WebAssembly, способный транслировать Ruby-код в модули Wasm, основанный на ruby.wasm. Ruvy реализован на языке Rust и содержит некоторые оптимизации для повышения производительности и упрощения выполнения Wasm-модулей.

Dev новости: OpenAI запускает новый интерфейс ChatGPT, WaveMaker для мобильных приложений
Dev новости: OpenAI запускает новый интерфейс ChatGPT, WaveMaker для мобильных приложений
Dev новости: OpenAI запускает новый интерфейс ChatGPT, WaveMaker для мобильных приложений

На этой неделе компания OpenAI представила бета-версию нового интерфейса ChatGPT — canvas, предназначенного для решения задач, связанных с программированием и написанием текстов. Это новшество направлено на преодоление ограничений обычного чата, предоставляя пользователям возможность работать в двухпанельном режиме.

Dev новости: Astro 4, Deno и cron, Webstorm релиз, Storybook релиз, Node.js 20 бета, Django
Dev новости: Astro 4, Deno и cron, Webstorm релиз, Storybook релиз, Node.js 20 бета, Django
Dev новости: Astro 4, Deno и cron, Webstorm релиз, Storybook релиз, Node.js 20 бета, Django

В Deno добавили очередь cron, Релиз 2023.3 Webstorm с AI ассистентом, Storybook последняя версия 7.6 перед 8, и бета Node.js 20