Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Облако

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

19 октября 2026·5 мин чтения
React Native 0.88Кроссплатформенная разработка
Вышел 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 переход выглядит так:

  1. Перенести точку входа React Native из AppDelegate в SceneDelegate.
  2. Пробросить обработку URL и user activity сцены в RCTLinkingManager, иначе перестанут открываться диплинки.
  3. Добавить 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 или старше, исправления безопасности и совместимости в него больше не попадут.

Как обновиться без сюрпризов

  1. Сверьте разницу между вашей версией и 0.88 в React Native Upgrade Helper — особенно файлы iOS-проекта.
  2. Проверьте библиотеки, которые лезут во внутренности событий (жесты, drag-and-drop, кастомные скроллы). Старая система ещё живёт за внутренним флагом, но её уберут в одном из следующих релизов.
  3. Переведите iOS-проект на SceneDelegate и прогоните диплинки, push-уведомления и восстановление состояния.
  4. Для Expo — обновление до SDK 58: по данным Expo, он требует Node.js 22.13+, 24.3+ или 26+ и рассчитан на iOS 27.
  5. Не включайте 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 поддерживается только одна сцена.

Источники

Материал подготовлен редакцией YuSMP Group по открытым источникам. Нужна экспертиза по теме или разработка под задачу — обсудим проект.

Обновим ваше приложение до React Native 0.88

Переведём iOS-часть на SceneDelegate под Xcode 27, проверим библиотеки жестов и событий, обновим Expo до SDK 58 и прогоним регресс диплинков и push-уведомлений на обеих платформах.

Обсудить обновление React Native