В конце октября вышел React Native 0.76 - первая версия, где New Architecture включена по умолчанию для новых проектов. Долгий цикл, начатый ещё в 2018-м с RFC, наконец дошёл до завершения. Что это меняет на практике - разбираем.
Что вообще такое New Architecture
Три компонента: Fabric (новый рендерер UI), TurboModules (синхронные нативные модули), Bridgeless (отсутствие асинхронного моста между JS и нативом). Все три раньше были opt-in, требовали ручной настройки и не во всех случаях работали стабильно. С 0.76 - это новый дефолт.
Что выигрываем
- Синхронные вызовы между JS и нативом - критично для жестов, анимаций, фокуса.
- Concurrent React работает корректно: Suspense на нативной стороне, transitions, useDeferredValue.
- Inline view rendering: сложные иерархии собираются за один проход.
- Снижается latency старта приложения - на одном из наших проектов TTI снизился на 22%.
Что может сломаться при миграции
Главная боль - нативные модули, написанные под старую архитектуру. Их придётся обновить или поменять. Самые чувствительные библиотеки - react-native-reanimated, react-native-gesture-handler, навигаторы, любые camera/scanner-обёртки.
Хорошая новость: основной экосистема к моменту релиза 0.76 уже подтянулась. Reanimated 3, Gesture Handler 2, React Navigation 7, Expo SDK 52 - всё работает на New Architecture.
Кому мигрировать сейчас
- Проектам с тяжёлыми анимациями и жестами - однозначно да.
- Приложениям с сложным навигационным стэком - да, выигрыш в плавности заметен.
- Маленьким стабильным CRUD-приложениям - можно подождать 0.77, пока экосистема ещё доберёт.
- Проектам с большим количеством самописных нативных модулей - планировать отдельный спринт под аудит и миграцию модулей.
Что мы делаем у себя
Из шести активных RN-проектов на 0.76 уже два, ещё два мигрируем в декабре, два оставляем на 0.74 до конца Q1 2025 - там legacy-нативные модули, которые надо переписывать заранее.