Если 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.