Если React Native проект не запускается после обновления зависимостей, причина может быть в JS-пакетах, native modules, Gradle, CocoaPods, версии Node, Android SDK, Xcode или Metro cache. Обновление одного пакета часто тянет цепочку несовместимостей.

Сначала не обновляйте все дальше. Нужно зафиксировать ошибку, сравнить lock-файл, понять, какой пакет изменился, и восстановить минимально рабочую сборку.

Коротко: что делать

  • Сохранить точный текст ошибки сборки или запуска
  • Проверить изменения package.json и lock-файла
  • Очистить кеши только после фиксации текущего состояния
  • Проверить Android и iOS отдельно
  • Сверить версии React Native, Gradle, CocoaPods, Node и Xcode

Основные причины

React Native связывает JavaScript и native-часть, поэтому несовместимость может проявиться на любом уровне.

  • Пакет обновился до версии, несовместимой с текущим React Native
  • Lock-файл был пересоздан и подтянул новые транзитивные зависимости
  • Native module требует pod install или Gradle sync
  • Старая версия Node или Java не подходит новой сборке
  • Metro или build cache хранит старые артефакты

Пошаговая диагностика

Нужно разделить ошибку установки, сборки native-проекта и запуска JS bundle.

  • Запустить npm/yarn install и проверить peer dependency warnings
  • Собрать Android через Gradle с подробным логом
  • Собрать iOS через pod install и Xcode
  • Запустить Metro с очисткой cache
  • Сравнить ошибку после временного отката lock-файла

Как исправить проблему

Исправление строится вокруг совместимой матрицы версий. Иногда правильнее откатить один пакет, чем чинить весь проект под новую цепочку.

  • Вернуть lock-файл к последней рабочей версии и обновлять пакеты по одному
  • Подобрать совместимые версии native modules
  • Выполнить pod install, Gradle sync и очистку build cache
  • Обновить Node/Java/Xcode только если это действительно требуется
  • Добавить инструкцию воспроизводимой сборки

Безопасный план решения

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

Чего не стоит делать

  • Не удалять lock-файл без причины
  • Не запускать массовый upgrade всех пакетов на production-ветке
  • Не чистить кеш до сохранения ошибки
  • Не игнорировать native release notes пакетов

Что подготовить перед исправлением

  • package.json и lock-файл
  • Текст ошибки
  • Платформа: Android, iOS или обе
  • Версии Node, React Native, Xcode/Android Studio

FAQ

Почему проект сломался, если обновили один пакет?

У пакета могут быть peer dependencies и native-часть, которая требует другие версии окружения.

Лучше откатить или чинить?

Если обновление не критично, сначала лучше восстановить рабочую сборку, а потом обновлять контролируемо.

Почему Android работает, а iOS нет?

У платформ разные native-зависимости: Gradle и CocoaPods ломаются независимо.

Когда стоит обратиться за помощью

Помощь нужна, если приложение нужно срочно собрать, а ошибка затрагивает native modules, Gradle, Pods или публикацию в магазины.

Итог

Начните с lock-файла, точной ошибки и сборки по платформам. Если нужно восстановить React Native проект после обновления зависимостей, можно написать в Telegram @rabotator_support.