Симптом → быстрое решение: проект React Native 0.88 можно запускать для iOS, но собрать и проверить его в симуляторе можно только в среде macOS с подходящей версией Xcode. Новый проект начинайте с шаблона 0.88; старый сначала сравните через официальный Upgrade Helper и проверяйте SceneDelegate, если переходите на iOS 27 SDK.

Это руководство для вас, если вы учитесь React Native и хотите впервые открыть свой проект в симуляторе iOS.
Оно также подойдёт, если вы обновляете существующий проект до 0.88 и хотите заранее понять, какие изменения проверить.
Если вы работаете на Windows или школьном компьютере, здесь можно определить, на каком этапе понадобится Mac.

Обновлено 20 октября 2026 года. Версию и изменения React Native сверяйте с официальной публикацией React Native 0.88, а требования к инструментам — с официальной инструкцией по настройке среды.

Определите маршрут: новый проект или обновление

Сначала выясните, какой у вас проект. Для нового проекта и для проекта из курса нужны разные действия: свежий шаблон уже содержит актуальную структуру, а в старом могли остаться настройки и нативные файлы предыдущей версии.

С чего вы начинаете Что сделать до сборки На что обратить внимание
Новый учебный проект Выбрать официальный шаблон React Native 0.88 и сверить требования к среде Не переносить настройки из старого урока без проверки
Существующий проект курса Сохранить отдельную копию и сравнить исходную версию с 0.88 в Upgrade Helper Проверить изменения iOS-проекта, зависимости и настройки сцены
Проект на Windows без доступа к Mac Продолжить JavaScript-часть, а перед iOS-сборкой подготовить доступ к macOS с Xcode Запуск Metro сам по себе не подтверждает, что приложение собрано для iOS

Если вы не уверены, какая версия используется в курсе, откройте package.json и найдите запись react-native. Уточните также, чем проект управляет зависимостями: например, проверьте наличие package-lock.json, yarn.lock или pnpm-lock.yaml. Файл блокировки подсказывает, каким менеджером зависимостей проект обычно устанавливают. Не создавайте новый lock-файл другим инструментом без согласования с курсом: в результате версии пакетов могут измениться, и причина ошибки станет менее очевидной.

В React Native есть две связанные, но разные части. JavaScript-код описывает логику приложения и интерфейс, а каталог ios содержит нативный проект, который собирает Xcode. Поэтому приложение может успешно запустить Metro — сервер, обслуживающий JavaScript-код, — и всё же не пройти iOS-сборку. Если задача курса заканчивается только запуском JavaScript, Mac может не понадобиться. Если требуется открыть iOS Simulator, проверить нативное поведение или собрать приложение, понадобится macOS и Xcode. Актуальные ограничения и инструкции сверяйте с официальной страницей настройки среды React Native.

Подготовьте среду до запуска

На Windows вы можете редактировать JavaScript и выполнять совместимые с вашей системой части курса, но Windows не заменяет Mac для сборки iOS-приложения через Xcode. Виртуальная машина macOS на Windows тоже не является простым обходным путём: она добавляет отдельные вопросы совместимости, производительности и лицензирования, а курс всё равно требует рабочего Xcode. Если оценка курса включает запуск именно в iOS Simulator, планируйте доступ к среде macOS заранее, а не после того, как проект уже готов.

Проверка Что посмотреть Почему это важно
Версия React Native Запись react-native в package.json От неё зависит, какие изменения шаблона и нативной части ожидаются
Система и Xcode Версии macOS и Xcode, указанные в официальной документации и требованиях проекта Несовместимость инструментов может остановить сборку до запуска приложения
Установка зависимостей Lock-файл и команда, принятая в курсе Смешивание менеджеров пакетов способно изменить дерево зависимостей
Цель проверки JavaScript, нативная iOS-сборка или проверка интерфейса в симуляторе Для этих задач нужны разные инструменты и критерии успеха

Указанные в официальных материалах версии и требования меняются. Не переносите номера Xcode из старого видеоурока автоматически: откройте текущую инструкцию React Native по подготовке среды и сопоставьте её с требованиями проекта. Если курс требует iOS 27 SDK, проверьте поддержку этого SDK установленным Xcode. Обозначение «Xcode 27» в материалах о совместимости — не повод устанавливать случайную предварительную сборку; руководствуйтесь актуальными официальными указаниями для нужного SDK.

До первого запуска сохраните исходное состояние проекта. Убедитесь, что код и настройки можно вернуть, а затем зафиксируйте используемые версии инструментов и способ установки зависимостей. Это особенно полезно, когда ошибка появляется после обновления: без исходной копии трудно отличить дефект проекта от результата миграции.

Создайте проект по шаблону React Native 0.88

Для нового проекта начните с текущей официальной инструкции и шаблона, соответствующего React Native 0.88. Не используйте команду создания из случайного старого урока, если она не совпадает с версией документации. Способ создания проекта и доступные параметры могут меняться вместе с инструментами; сверяйте команду на официальной странице начала работы.

После создания проверьте, что в проекте есть каталог ios и нативные файлы, сгенерированные шаблоном. В версии 0.88 предусмотрен путь с SceneDelegate; это важно для жизненного цикла приложения и работы с окнами iOS. Если шаблон уже создал нужную структуру, не добавляйте вручную конфигурацию из старого руководства только потому, что в нём упоминается AppDelegate.

SceneDelegate — объект, через который приложение обрабатывает жизненный цикл сцены. Сцена — отдельное представление интерфейса приложения, которым управляет система. В старых инструкциях настройка могла быть сосредоточена в AppDelegate, поэтому механическое копирование таких шагов в проект 0.88 способно привести к дублирующей или несовместимой конфигурации. В заметках к выпуску React Native 0.88 описана поддержка жизненного цикла через SceneDelegate; это не означает, что каждому новому проекту нужно вручную переносить точку входа.

Проверьте шаблон до редактирования: откройте нативные файлы и найдите, где объявлены делегаты приложения и сцены, а затем сопоставьте их с документацией версии. Если преподаватель дал собственный стартовый проект, уточните, не отличается ли он от официального шаблона. Не заменяйте файлы целиком, пока не знаете, какие настройки курса уже внесены.

Обновите старый проект и проверьте SceneDelegate

Если проект создан на более ранней версии, сначала определите исходную версию и сохраните копию. Затем выберите обе версии в официальном Upgrade Helper и сравните изменения файлов. Переносите изменения по одному смысловому блоку, а не заменяйте весь каталог ios готовым шаблоном: в старом проекте могут быть настройки курса, идентификаторы приложения или конфигурация библиотек.

Официальное сообщение о 0.88 указывает на отсутствие пользовательских breaking changes, однако это не гарантирует, что все сторонние библиотеки и индивидуальные нативные настройки старого проекта обновятся автоматически. Сверьте изменения в Podfile, настройках сборки, Info.plist, точках входа приложения и зависимостях. Если вы видите несовпадение, выясните, относится ли оно к React Native, библиотеке или настройке самого курса.

Особое внимание нужно уделить переходу на iOS 27 SDK. По информации в официальном выпуске, для такого SDK необходимо учитывать требования UIScene; при этом обозначена граница поддержки одной сцены. Это не значит, что всем проектам, собранным с предыдущим SDK, нужно немедленно переписывать структуру. Сначала определите, какой SDK фактически использует ваш проект, и только затем решайте, нужна ли миграция. Подробности о сценах и декларациях конфигурации даёт документация Apple по переходу на жизненный цикл UIScene и настройке сцен приложения.

Проверьте эти места по очереди:

  • Точка входа. Посмотрите, как AppDelegate и SceneDelegate подключены в проекте. Не удаляйте существующую реализацию, пока не сравнили её с изменениями Upgrade Helper.
  • Info.plist. Убедитесь, что описание поддерживаемых сцен согласовано с выбранным шаблоном и требованиями SDK. Не добавляйте записи наугад: сначала проверьте структуру в документации Apple.
  • Обратные вызовы. Если приложение обрабатывает ссылки или другие URL-события, проверьте, куда передаются соответствующие вызовы после изменения жизненного цикла.
  • Сторонние библиотеки. Проверьте инструкции их разработчиков и совместимость с версией React Native. Отсутствие breaking changes в самом React Native не подтверждает совместимость каждого пакета.
  • Результат сравнения. Запишите, какие изменения вы перенесли и почему. Тогда при неудачной сборке можно будет вернуть последнюю рабочую конфигурацию.

Нужно ли новому проекту React Native 0.88 менять SceneDelegate?

Если проект создан из официального шаблона 0.88, сначала проверьте его сгенерированные нативные файлы и не меняйте SceneDelegate без конкретной причины. Для старого проекта решающим условием служат его исходные настройки и целевой SDK, а не сам факт обновления до версии 0.88.

Запустите iOS Simulator и разберите результат

Перед запуском подготовьте зависимости способом, который принят в проекте, и убедитесь, что macOS и Xcode доступны. Затем откройте iOS-проект через механизм, описанный в официальной документации, выберите установленный симулятор и запустите сборку. Команда и доступные параметры могут зависеть от структуры проекта, поэтому сверяйте их с официальным руководством React Native по запуску в симуляторе iOS. Не подставляйте в команду название устройства из старого урока: проверьте, что выбранная модель действительно доступна в вашей версии Xcode.

Практический порядок такой:

  • Проверьте, что каталог проекта и файл зависимостей соответствуют курсу. Если вы переключались между ветками, убедитесь, что не остались изменения от другого задания.
  • Установите JavaScript-зависимости тем менеджером, на который указывает lock-файл. Если установка завершается ошибкой, сначала исправьте её; запуск сборки с неполным набором пакетов только добавит вторую проблему.
  • Подготовьте нативные зависимости iOS по инструкции проекта и актуальным документам React Native. Не копируйте команды управления CocoaPods из устаревшего материала без проверки.
  • Откройте проект или запустите его из терминала способом, указанным в документации для вашей версии. Выберите iOS Simulator, доступный в Xcode.
  • Дождитесь завершения нативной сборки, а затем проверьте, что приложение появилось и открыло нужный экран. Отдельно убедитесь, что Metro остаётся доступен, если проект использует его для загрузки JavaScript.
  • Запишите версии macOS, Xcode, React Native и симулятора, а также результат сборки. Это поможет преподавателю или одногруппнику воспроизвести ошибку.
Что вы видите Что это означает Что проверять дальше
Сборка прерывается до появления приложения Не подтверждена успешная сборка нативного проекта Первую ошибку Xcode, совместимость версии, нативные зависимости и конфигурацию проекта
Приложение не открывается после сборки Сборка и запуск — отдельные этапы Выбранный симулятор, сообщения Xcode и ошибки при старте приложения
Приложение открылось, но экран пустой или неверный Симулятор запустил приложение, но это ещё не подтверждает корректность курса Metro, JavaScript-ошибки, стартовый экран и сетевые запросы приложения
Metro работает, но iOS-сборки нет Запущен сервер JavaScript, а не обязательно приложение в симуляторе Наличие Xcode, доступность macOS и фактический результат нативной сборки

Если сборка не проходит, не исправляйте сразу несколько разных частей. Сначала найдите первую содержательную ошибку в выводе Xcode, затем проверьте соответствующую зависимость или файл. Ошибка в конце лога часто лишь сообщает, что сборка остановилась; первопричина может находиться выше. После каждого изменения повторяйте запуск и фиксируйте, что именно изменилось.

Как проверить проект, если у вас Windows и нет Mac?

На Windows вы можете продолжать писать и изучать JavaScript, но завершить iOS-сборку и проверить приложение в iOS Simulator без подходящей среды macOS с Xcode не получится. Если для курса достаточно изучения кода, выполняйте эту часть локально. Если преподаватель требует демонстрацию на симуляторе, договоритесь о доступе к Mac или подготовьте удалённую среду macOS заранее. Не считайте успешный запуск Metro заменой проверки приложения на iOS.

Завершите проверку по критериям курса

Прежде чем сдавать работу, пройдите список ниже. Отметки полезны не только для отчёта: они позволяют понять, где именно заканчивается ваша проверка — на JavaScript, сборке или запуске в симуляторе.

  • [ ] Я записал версию React Native из package.json и проверил, что она соответствует задаче курса.
  • [ ] Я сохранил исходный проект или отдельную копию перед обновлением.
  • [ ] Я проверил требования к macOS, Xcode и SDK по актуальной официальной документации.
  • [ ] Я устанавливал зависимости способом, соответствующим lock-файлу проекта.
  • [ ] Для нового проекта я проверил структуру официального шаблона, включая путь SceneDelegate.
  • [ ] Для старого проекта я сравнил изменения через Upgrade Helper и не переносил файлы вслепую.
  • [ ] Если выбран iOS 27 SDK, я проверил требования UIScene и конфигурацию приложения.
  • [ ] Я дождался результата нативной сборки, а не ограничился запуском Metro.
  • [ ] Я открыл приложение в симуляторе, проверил нужный экран и записал результат для курса.

Если один из пунктов не выполнен, обозначьте это в отчёте. Например, «JavaScript запускается, но iOS-сборка не проверена из-за отсутствия доступа к Xcode» точнее, чем заявление, что приложение полностью протестировано. Такая формулировка показывает, что вы различаете этапы работы, а преподавателю помогает предложить следующий шаг.

Для нового проекта порядок простой: шаблон 0.88, проверка официальных требований, затем сборка в симуляторе. Для старого проекта: резервная копия, сравнение версий, проверка нативных изменений и отдельное решение по UIScene. Так вы не внесёте миграцию, которая не нужна вашему целевому SDK, и не пропустите её там, где она требуется.

Если курс требует iOS Simulator, но у вас только Windows или школьный компьютер, перед выбором решения проверьте, нужен ли вам постоянный локальный Mac или только доступ на время сборки и сдачи проекта. Собственный компьютер требует покупки и обслуживания; общая учебная машина может быть занята или недоступна в нужный момент; самостоятельная виртуализация добавляет настройку и совместимость поверх изучения React Native. Если вам нужна временная среда macOS с Xcode именно для учебной проверки, изучите варианты подключения к удалённому Mac и заранее уточните доступные инструменты и порядок работы. На странице заказа Mac mini можно проверить условия доступа, прежде чем решать, подходит ли такой вариант вашему курсу. Не выбирайте конфигурацию, пока не сопоставили её с требованиями курса.