Что нового в React 19
Что проверяют
Трогали ли вы новые API руками или только читали заголовки новостей. Сильный ответ отделяет то, что пришло в React 19, от React 18 и от возможностей фреймворков. Следом обычно спрашивают, как вы мигрировали бы проект с 18 версии.
Как отвечать
React 19 вышел стабильным в декабре 2024 года, главная тема релиза: формы и асинхронные мутации.
- Actions:
startTransitionтеперь принимает async-функцию, React сам ведёт состояние ожидания, ошибки и оптимистичные обновления; useActionState: хук над действием, возвращает состояние, обёрнутый action и флагisPending. В канареечных сборках называлсяuseFormState;<form action={fn}>: форма принимает функцию, после успешной отправки неуправляемые поля сбрасываются сами;useFormStatusизreact-dom: дочерний компонент узнаёт, отправляется ли родительская форма, без пробрасывания пропсов;useOptimistic: показать результат сразу и откатить его, если запрос упал;use: читает промис (вместе с Suspense) или контекст, и его можно вызывать в условии;refкак обычный проп:forwardRefдля функциональных компонентов больше не нужен, а колбэк-ref может вернуть функцию очистки;- мелочи API:
<Context>вместо<Context.Provider>, теги<title>и<meta>из любого компонента поднимаются в<head>, появилисьpreloadиpreinit; - Server Components и Server Actions: стали стабильной частью React, но работают только через фреймворк или бандлер с их поддержкой.
Отдельно назовите удалённое: ReactDOM.render и hydrate, строковые ref, legacy context, propTypes и defaultProps у функциональных компонентов. В 19.2 добавились <Activity> и useEffectEvent.
Где спотыкаются
Называют новинками useTransition и useDeferredValue. Они появились в React 18, а в 19 изменилось лишь то, что transition принимает async-функцию, а useDeferredValue получил initialValue.
Приписывают React 19 автоматическую мемоизацию. Это React Compiler, отдельный инструмент, который работает и с 18 версией.
Думают, что Server Components можно включить в любом SPA на Vite. Без поддержки на уровне бандлера и сервера их не будет.