Статья

Публикация приложения Expo в App Store

Практическое руководство по публикации приложения Expo: от регистрации в Apple Developer до проверки в App Store.

Публикация приложения Expo в App Store

Я уже проходил процесс публикации своего приложения Expo в Google Play. Если вы читали ту статью, то знаете, что Google Play и App Store — очень разные звери. У Apple своя экосистема, инструменты, процесс проверки и свои способы усложнить жизнь.

Это моё пошаговое руководство по публикации приложения Expo в iOS App Store: от создания аккаунта Apple Developer до нажатия «Submit for Review». Здесь всё, что я хотел бы знать до начала.

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  • Рабочий проект Expo (managed или bare workflow)
  • Mac или доступ к нему. Apple требует macOS для нативной сборки приложений iOS, хотя EAS Build может обойти это ограничение.
  • Установленный Xcode (последняя стабильная версия)
  • Apple ID

❇️ Шаг 1: вступите в Apple Developer Program

Это первое препятствие. В отличие от единоразового платежа $25 для Android, Apple берёт $99 в год.

  1. Перейдите на developer.apple.com
  2. Нажмите «Account» и войдите с помощью Apple ID
  3. Вступите в Apple Developer Program
  4. Введите личные данные или данные организации
  5. Оплатите $99

После одобрения у вас появится доступ к App Store Connect и Apple Developer Portal — двум основным панелям для всех следующих шагов.

❇️ Шаг 2: настройте приложение в App Store Connect

В App Store Connect вы управляете карточкой приложения, сборками, ценами и отправкой на проверку.

  1. Перейдите на appstoreconnect.apple.com
  2. Нажмите кнопку «+» и выберите «New App».
  3. Введите данные приложения:
    • Платформа: iOS
    • Название: отображаемое название приложения (выбирайте внимательно, изменить его сложно)
    • Bundle ID: должен точно совпадать со значением в конфигурации Expo
    • SKU: уникальный внутренний идентификатор
  4. Нажмите «Create».

Запись о вашем приложении теперь есть в App Store Connect. Сборки пока нет — только контейнер приложения.

❇️ Шаг 3: настройте проект Expo для iOS

Откройте app.json (или app.config.js) и убедитесь, что раздел iOS заполнен полностью:

{
  "expo": {
    "name": "Your App Name",
    "slug": "your-app-slug",
    "version": "1.0.0",
    "ios": {
      "bundleIdentifier": "com.yourname.yourapp",
      "buildNumber": "1",
      "supportsTablet": true,
      "infoPlist": {
        "NSCameraUsageDescription": "We need camera access to...",
        "NSPhotoLibraryUsageDescription": "We need photo access to..."
      }
    }
  }
}

Что нужно проверить особенно внимательно:

  • bundleIdentifier должен точно совпадать со значением, зарегистрированным в App Store Connect.
  • Увеличивайте buildNumber при каждой загрузке, даже если версия не меняется.
  • Добавьте в infoPlist каждое разрешение, которое использует приложение, с понятным описанием. Apple может отклонить приложение, если они отсутствуют или сформулированы расплывчато.

❇️ Шаг 4: разберитесь с сертификатами и профилями подготовки

Именно здесь Apple больше всего отличается от Android и именно здесь многие разработчики теряют часы. Вам нужны две вещи:

  • Distribution Certificate, подтверждающий, что сборка создана вами
  • Provisioning Profile, связывающий Bundle ID вашего приложения с сертификатом и разрешающий распространение

Вариант А: доверьте всё EAS (рекомендуется)

Если вы используете EAS Build, он может управлять всем этим автоматически:

npx eas-cli credentials

EAS предложит войти в аккаунт Apple, затем сгенерирует и сохранит всё необходимое за вас.

Вариант Б: вручную через Xcode или Apple Developer Portal

  1. В Apple Developer Portal откройте Certificates, IDs & Profiles.
  2. Создайте новый iOS Distribution Certificate.
  3. Создайте App ID, совпадающий с Bundle Identifier.
  4. Создайте Distribution Provisioning Profile, который связывает их.

💡 Вывод: по возможности не держите несколько сертификатов разработчика. Apple ограничивает их число на аккаунт, а отзыв сертификата делает недействительными все использующие его профили подготовки.

❇️ Шаг 5: соберите приложение

Через EAS Build (рекомендуется)

npm install -g eas-cli
eas login
eas build:configure

Настройте eas.json для продакшена:

{
  "build": {
    "production": {
      "ios": {
        "distribution": "store"
      }
    }
  }
}

Затем запустите сборку:

eas build --platform ios --profile production

EAS собирает приложение в облаке, подписывает код и выдаёт файл .ipa, готовый к загрузке. Mac для этого шага не нужен.

Через Xcode (локальная сборка)

npx expo run:ios --configuration Release

Или откройте папку ios/ в Xcode, выберите «Any iOS Device» в качестве цели и выберите Product → Archive.

❇️ Шаг 6: загрузите сборку в App Store Connect

Вариант А: EAS Submit (проще всего)

eas submit --platform ios --latest

Вариант Б: Transporter — скачайте его из Mac App Store, войдите, добавьте файл .ipa и нажмите «Deliver».

Вариант В: Xcode Organizer — после архивации откройте Window → Organizer, найдите архив и выберите Distribute App → App Store Connect → Upload.

❇️ Шаг 7: протестируйте в TestFlight

Перед отправкой в App Store всегда тестируйте через TestFlight.

  1. В App Store Connect откройте TestFlight.
  2. После обработки сборки добавьте Internal Testers (до 100 человек из вашей команды).
  3. Для External Testers сначала отправьте сборку на Beta App Review (обычно 1–2 дня).

❇️ Шаг 8: подготовьте карточку в App Store

Apple требует всё перечисленное ниже перед отправкой:

  • Название (до 30 символов) и подзаголовок (до 30 символов)
  • Категория (основная и необязательная дополнительная)
  • URL политики конфиденциальности (обязательно)
  • Описание (до 4000 символов; первые строки должны быть самыми сильными)
  • Ключевые слова (до 100 символов в сумме, через запятую)

Скриншоты — Apple требует определённые размеры:

  • iPhone 6,9 дюйма (iPhone 16 Pro Max) — обязательно
  • iPhone 6,7 дюйма (iPhone 14 Plus / 15 Plus) — необязательно, но рекомендуется
  • iPad Pro 13 дюймов (M4) — обязательно, если приложение поддерживает iPad

❇️ Шаг 9: задайте цену и доступность

  1. Откройте Pricing and Availability.
  2. Выберите «Free» или задайте ценовой уровень.
  3. Выберите территории, в которых хотите распространять приложение (по умолчанию — все).
  4. Задайте дату доступности (необязательно).

❇️ Шаг 10: заполните анкету конфиденциальности приложения

Apple требует заявить, как вы обрабатываете данные. Эта информация становится Privacy Nutrition Label на странице вашего приложения в App Store. В App Store Connect откройте App Privacy и отвечайте честно: какие данные вы собираете, связаны ли они с личностью пользователя и используются ли для отслеживания.

❇️ Шаг 11: отправьте на проверку

В разделе Review Information оставьте заметку для проверяющего из Apple. Если для входа в приложение нужна учётная запись, укажите здесь тестовые данные. Затем выберите Add for Review → Submit to App Review.

❇️ Шаг 12: выпуск!

После одобрения статус приложения меняется на «Ready for Sale». При отправке вы выбираете один из вариантов:

  • Выпуск вручную: вы сами решаете, когда приложение станет доступно.
  • Автоматический выпуск: приложение становится доступным сразу после одобрения.

🎉 Поздравляю — ваше приложение в App Store.

❇️ Подведём итоги

Процесс в App Store менее прозрачен, чем в Google Play, но последующие релизы после первого проходят гораздо легче. Больше всего времени уходит на:

  1. Сертификаты и профили подготовки — доверьте их EAS.
  2. Скриншоты — выделите на них время для настоящего дизайна.
  3. Первую проверку — заложите 1–3 дня и убедитесь, что ничего не падает.

Экосистема Apple сложнее в освоении, но аудитория App Store ценна, а высокие стандарты качества работают в вашу пользу, когда вы уже внутри. Удачного выпуска! 🚀

Если материал оказался полезным, я также писал о том, как опубликовать приложение Expo в Google Play — такой же пошаговый разбор для Android. Мои приложения также можно найти в vladsiu.com.