Демо Flow Lab: пример отчёта на выдуманном проекте (FieldCrew). Такой отчёт вы получите по своему приложению.

Проверка готовности к магазинам: FieldCrew

Стек: Expo ~53.0.9 · React Native 0.79.2 · TypeScript · тестов: 0 · lock-файл: yarn.lock

Идентификатор iOS: com.example.fieldcrew · пакет Android: com.example.fieldcrew

Мешает выпуску: 3 · исправить: 10 · заметки: 3. Проверка только читала файлы проекта: ничего не устанавливалось и не запускалось.

УровеньРазделЧто нашлиЧто сделать
🔴СтекExpo SDK 53 отстаёт от текущего SDK 57 на 4 версии. Для магазинов сейчас нужны свежие Xcode, iOS SDK и уровень Android API, а со старым SDK сборку обычно не примут.Обновить SDK по шагам (с 53 до 57), исправить несовместимости, заново проверить.
🔴Безопасность.env лежит в проекте, и .gitignore не исключает файлы .env.Убрать из репозитория, сменить ключи, добавить .env* в .gitignore.
🔴БезопасностьВ src/billing/config.ts, похоже, лежит секретный ключ (Stripe live secret key).Перенести на сервер или в секреты EAS и сменить: всё, что попало в приложение, может прочитать любой.
🟡НастройкиИдентификатор iOS «com.example.fieldcrew» похож на шаблонный.Выбрать окончательный идентификатор до первой загрузки в магазин: потом его не изменить.
🟡НастройкиИмя пакета Android «com.example.fieldcrew» похоже на шаблонное.Выбрать окончательный идентификатор до первой загрузки в магазин: потом его не изменить.
🟡СборкаНет eas.json: облачная сборка не настроена.Добавить профили сборки EAS (разработка, тест, магазин).
🟡App StoreЗначок 512×512, а магазину нужен 1024×1024.Сохранить значок в размере 1024×1024.
🟡App StoreУ значка есть прозрачность, а значки App Store должны быть без неё.Положить значок на сплошной фон.
🟡Google PlayНет адаптивного значка Android.Добавить adaptiveIcon: передний план и цвет фона.
🟡App StoreНе указано, использует ли приложение шифрование, поэтому App Store Connect спрашивает об этом при каждой загрузке.Задать ios.config.usesNonExemptEncryption (обычно false, если приложение шифрует только через HTTPS).
🟡App Storeexpo-camera используется, но не задан текст разрешения iOS (NSCameraUsageDescription), а из-за общих шаблонных текстов App Store часто отказывает (правило 5.1.1).Написать для каждого разрешения конкретное объяснение, зачем оно нужно.
🟡App Storeexpo-location используется, но не задан текст разрешения iOS (NSLocationWhenInUseUsageDescription), а из-за общих шаблонных текстов App Store часто отказывает (правило 5.1.1).Написать для каждого разрешения конкретное объяснение, зачем оно нужно.
🟡БезопасностьВ разделе «extra» конфигурации есть supabaseServiceKey, а всё из extra попадает внутрь приложения.Оставить там только открытые значения.
⚪СборкаПри установке зависимостей запускается скрипт postinstall: «patch-package» (обычный инструмент).
⚪App StoreНе описан манифест приватности приложения (для своих модулей Expo добавляет его сам).Описать сбор данных и «API с обязательной причиной», если их использует приложение или подключённые библиотеки.
⚪КачествоАвтоматических тестов нет.Перед изменениями добавить тесты на ключевую логику.

Оценка работы до сборки, готовой к магазину: около 21 ч (исправления из таблицы + настройка EAS и первые сборки). Аккаунты магазинов (Apple Developer, Google Play) и публикация остаются на аккаунтах владельца.

План по шагам

  1. Убрать ключи и секреты из кода и репозитория, сменить их (до всего остального).
  2. Обновить Expo SDK и зависимости, исправить несовместимости, проверить приложение.
  3. Исправить пункты 🟡: тексты разрешений, значки, шифрование, настройки сборки.
  4. Настроить облачную сборку EAS и собрать тестовые версии iOS и Android.
  5. Проверка на ваших устройствах: TestFlight (iOS) и внутреннее тестирование (Google Play).
  6. Отправка на проверку в App Store и Google Play с вашего аккаунта; ответы на замечания проверяющих.