Вышел React Native 0.88: SceneDelegate для iOS 27, события как в DOM и вариативные шрифты

Meta выпустила React Native 0.88 — релиз без ломающих изменений для пользовательского кода. События теперь по умолчанию проходят по модели W3C с фазами погружения и всплытия, у Text и TextInput появились вариативные шрифты, а iOS-приложения получили поддержку SceneDelegate, без которой не обойтись при сборке на SDK iOS 27.
Пакет 0.88.0 появился в npm 15 октября вместе с Expo SDK 58, официальный анонс команда опубликовала 19 октября. Для продуктов, где разработка мобильных приложений идёт на одной кодовой базе под iOS и Android, это одно из самых заметных обновлений года: оно закрывает требование Apple к жизненному циклу сцен и сближает поведение событий с вебом.
Ниже разбираем, что вошло в релиз, что устарело и в каком порядке обновляться. Если вы только выбираете стек, начните с нашего материала о том, как создать мобильное приложение на React Native, и с обзора подхода, который у нас называется кроссплатформенная разработка.
Что вошло в React Native 0.88
В релиз попали 568 коммитов от 91 участника. Ключевые изменения по официальному анонсу:
- События по модели W3C по умолчанию. Вместо плагинной системы используется
EventTarget: реальные фазы capture и bubble,stopPropagation()иpreventDefault()работают как в DOM. Декларативные пропсы, синтетические объекты событий и порядок их срабатывания не изменились. - Вариативные шрифты. Новое свойство стиля
fontVariationSettingsдляTextиTextInputна обеих платформах — в виде объекта ({wght: 700, slnt: -10}) или CSS-строки. - SceneDelegate на iOS. В
RCTReactNativeFactoryдобавлены методы запуска приложения в окне сцены с параметрамиconnectionOptions. - ArrayBuffer в Java TurboModules. Бинарные данные передаются в нативный модуль Android без кодирования в Base64.
- Swift Package Manager по-прежнему экспериментальный и включается вручную, но стал стабильнее: версия iOS берётся из deployment target приложения, настройки переехали в
swiftpmConfigвpackage.json. - Зависимости: React 19.3.0, Metro 0.87 (минимум 0.87.1), обновлённый Hermes.
Почему SceneDelegate — главное для iOS-команд
Команда React Native прямо указывает: жизненный цикл на основе сцен нужен для сборки на SDK iOS 27 в Xcode 27. Expo в анонсе SDK 58 формулирует ещё жёстче — SceneDelegate теперь обязателен, а шаблон проекта сам генерирует SceneDelegate.swift и раздел UIApplicationSceneManifest в Info.plist.
Для приложения на «голом» React Native переход выглядит так:
- Перенести точку входа React Native из
AppDelegateвSceneDelegate. - Пробросить обработку URL и user activity сцены в
RCTLinkingManager, иначе перестанут открываться диплинки. - Добавить
UIApplicationSceneManifestвInfo.plist— образец есть в обновлённом шаблоне сообщества.
Ограничение текущей версии — только одна сцена (UIApplicationSupportsMultipleScenes = false). Зато Dimensions.get() и useWindowDimensions() теперь корректно обновляются при изменении размера окна — это пригодится и для складных устройств.
Что устарело и что перестаёт поддерживаться
InitializeCore— заменить на'react-native/setup-env'.- Префиксные стили
experimental_backgroundSize,experimental_backgroundPosition,experimental_backgroundRepeat— теперь стабильны без префикса, старые имена работают как алиасы. InputAccessoryViewна iOS — рекомендация перейти наKeyboardStickyViewизreact-native-keyboard-controller.- Аргумент
fabricEnabledуReactFragment— новая архитектура включена безусловно.
Отдельно о поддержке: с выходом 0.88 ветка 0.85.x становится неподдерживаемой. Если приложение сидит на 0.85 или старше, исправления безопасности и совместимости в него больше не попадут.
Как обновиться без сюрпризов
- Сверьте разницу между вашей версией и 0.88 в React Native Upgrade Helper — особенно файлы iOS-проекта.
- Проверьте библиотеки, которые лезут во внутренности событий (жесты, drag-and-drop, кастомные скроллы). Старая система ещё живёт за внутренним флагом, но её уберут в одном из следующих релизов.
- Переведите iOS-проект на SceneDelegate и прогоните диплинки, push-уведомления и восстановление состояния.
- Для Expo — обновление до SDK 58: по данным Expo, он требует Node.js 22.13+, 24.3+ или 26+ и рассчитан на iOS 27.
- Не включайте SwiftPM в продакшене, пока он экспериментальный: по плану команды он может стать вариантом по умолчанию в 0.89.
Часто задаваемые вопросы
Нужно ли переписывать код при обновлении с 0.87? По заявлению команды, нет: в 0.88 нет ломающих изменений для пользовательского кода. Это третий такой релиз после 0.83 и 0.86. Нативную часть iOS для SceneDelegate менять всё равно придётся, если собираете на SDK iOS 27.
Можно ли вернуть старую систему событий? Публичного переключателя нет: старый путь остался за внутренним флагом и будет удалён. О несовместимостях команда просит сообщать в трекер.
Какая версия Expo соответствует React Native 0.88? Expo SDK 58, вышедший 15 октября 2026 года.
Поддерживает ли SceneDelegate несколько окон на iPad? Пока нет — в 0.88 поддерживается только одна сцена.
Источники
- React Native Blog — React Native 0.88: Web-Based Event Dispatching, Variable Fonts, SceneDelegate, 19 октября 2026 (первоисточник).
- Expo Changelog — Expo SDK 58, 15 октября 2026.
- npm — react-native, версия 0.88.0, опубликована 15 октября 2026.
- React Native Releases Working Group — политика поддержки версий.
Обновим ваше приложение до React Native 0.88
Переведём iOS-часть на SceneDelegate под Xcode 27, проверим библиотеки жестов и событий, обновим Expo до SDK 58 и прогоним регресс диплинков и push-уведомлений на обеих платформах.