TestFlight: как протестировать iPhone-приложение до ревью
Автор: Mehdi Azizi
Обновлено , 8 мин
Внутренние и внешние тестировщики, бета-ревью, публичная ссылка, билды на 90 дней: TestFlight простыми словами и чек-лист перед отправкой в Apple.
Что такое TestFlight и зачем он нужен?
TestFlight это сервис Apple, который позволяет установить твоё приложение на настоящие iPhone до его выхода в App Store. Ты загружаешь билд в App Store Connect, приглашаешь тестировщиков, и они ставят его через приложение TestFlight, бесплатное в App Store. Тестировщики бывают двух типов: внутренние, до 100 участников твоей команды, без проверки Apple; и внешние, до 10 000 человек, приглашённых по e-mail или по публичной ссылке, после бета-ревью твоего первого билда. Каждый билд доступен для тестирования 90 дней.
| Критерий | Внутренние тестировщики | Внешние тестировщики |
|---|---|---|
| Максимум | 100 | 10 000 |
| Доступ к аккаунту | Да, с ролью | Нет |
| Приглашение | Добавление во внутреннюю группу | E-mail или публичная ссылка |
| Бета-ревью Apple | Нет | На первом билде |
| Для кого | Ты, партнёр, близкий человек | Друзья, первые пользователи |
Чтобы пользоваться TestFlight, нужен платный аккаунт Apple Developer: с бесплатным аккаунтом сервис недоступен. Весь этот гайд исходит из того, что он у тебя есть, причём в рамках стандартной программы: корпоративная программа Apple доступа к TestFlight не даёт.
В моих приложениях каждый билд, отправленный через EAS Submit, проходит через TestFlight и мой iPhone, прежде чем уйти на ревью. Именно там я нахожу проблемы, которые не видны во время разработки.
Как загрузить билд в TestFlight
Билд это скомпилированная и подписанная версия твоего приложения: если подпись неправильная, Apple отклонит его при загрузке с ошибкой ITMS-90034. Чтобы билд появился в TestFlight, его нужно отправить в App Store Connect. С Expo это eas build --platform ios, затем eas submit --platform ios, причём с достаточно свежим образом сборки, чтобы избежать ITMS-90725. Согласно документации Expo, билд появляется в TestFlight после обработки на стороне Apple, обычно через 10-15 минут. Всё это можно сделать с PC: гайд публикация iOS-приложения без Mac подробно описывает всю цепочку.
Две вещи часто стопорят в первый раз:
- Номер билда должен меняться при каждой загрузке. Apple не примет два билда с одинаковым номером для одной версии. В EAS включи автоинкремент и забудь об этом.
- Вопрос о шифровании. Пока ты не ответил на вопрос об использовании шифрования, билд висит со статусом Missing Compliance. Можно отвечать каждый раз в App Store Connect или указать это один раз в конфигурации приложения.
Внутренние тестировщики: твоя команда, без ожидания
Внутренние тестировщики это пользователи твоего аккаунта App Store Connect с назначенной ролью. Apple разрешает до 100 таких, и каждый может установить приложение на несколько устройств, до 30.
Их главный плюс: никакого бета-ревью. Как только билд прошёл обработку без автоматических ошибок вроде ITMS-90717, ты добавляешь его во внутреннюю группу, и он сразу доступен. Это подходящая группа для тебя, а также для партнёра или близкого человека, которому ты даёшь доступ к аккаунту.
Ограничение: их нужно добавлять как пользователей твоего аккаунта App Store Connect. Для незнакомых людей это не годится.
Внешние тестировщики и бета-ревью
Внешним тестировщикам доступ к твоему аккаунту не нужен. Можно пригласить до 10 000 человек, по e-mail или по публичной ссылке. Это подходящая группа для друзей, первых пользователей, сообщества.
Взамен Apple проверяет билд, прежде чем открыть его им. Когда ты добавляешь первый билд версии во внешнюю группу, он уходит на бета-ревью. Следующие билды той же версии не обязательно требуют полной проверки.
Перед отправкой App Store Connect запросит информацию для тестирования:
- описание беты, которое говорит тестировщикам, на что смотреть;
- e-mail для отзывов;
- твои контактные данные, чтобы Apple могла с тобой связаться.
Бета-ревью это не ревью App Store. Билд, одобренный в TestFlight, всё ещё могут отклонить при публикации.
Бета-ревью проверяет, что билд соответствует правилам, но финальное ревью смотрит ещё и на страницу приложения, подписки, юридические тексты и весь пользовательский опыт. Держи в голове типичные причины отказа, о которых я рассказываю в статье почему Apple отклоняет приложение.
Как пригласить тестировщиков по публичной ссылке
Публичная ссылка это самый простой способ дать протестировать приложение людям, которых ты пока не знаешь. Вот инструкция Apple с названиями из интерфейса на английском:
- В App Store Connect открой своё приложение, затем вкладку TestFlight.
- В разделе External Testing выбери внешнюю группу.
- Нажми Create Public Link.
- Выбери Open to Anyone, чтобы открыть ссылку для всех, или Filter by Criteria, чтобы ограничить её определёнными устройствами и версиями iOS.
- При желании задай лимит тестировщиков через Set Limit.
Дальше делишься ссылкой где угодно: в сообщении, соцсети, e-mail. Человек ставит приложение TestFlight, открывает ссылку и принимает приглашение.
Две вещи, которые стоит знать, прежде чем раздавать её широко:
- Задай лимит. Если ссылка разойдётся шире, чем ты планировал, ты сохранишь контроль над числом тестировщиков.
- Тестировщики по публичной ссылке анонимны. App Store Connect показывает по ним только дату установки, сессии и падения. Если хочешь знать, кто что тестировал, лучше приглашай по e-mail.
Сколько живёт билд в TestFlight?
Билд доступен тестировщикам 90 дней. После этого он истекает, и тестировщики больше не могут его открыть. Если бета длится дольше, просто загрузи новый билд до истечения срока.
На практике ты будешь загружать новые билды гораздо чаще: после каждого важного исправления. Каждый новый билд, добавленный в группу, предлагается тестировщикам, и они получают его в приложении TestFlight.
Как собирать отзывы тестировщиков
В TestFlight встроена система отзывов: тестировщик делает скриншот в твоём приложении, может добавить пометки и отправить его тебе. Если приложение падает, ты получаешь краш-репорт, а тестировщик может добавить контекст. Всё это лежит в App Store Connect.
Это полезно, но для разбора конкретного падения этого мало. В свои приложения я добавляю Sentry, который присылает ошибку с конкретной строкой кода, и PostHog, который показывает, где пользователи бросают приложение. Оба работают и в билде TestFlight, и в продакшене.
Как тестировать подписки в TestFlight
Если твоё приложение продаёт подписку, именно в TestFlight ты проверяешь, что она реально работает. Покупки в билде TestFlight проходят через тестовую среду Apple: деньги с тестировщиков не списываются. Продления ускорены: каждая подписка продлевается раз в день, максимум шесть раз за неделю, независимо от её реального срока.
Проверь как минимум, что отображаемые цены правильные, что покупка действительно открывает приложение и что кнопка восстановления находит подписку после переустановки. Для управления подписками в своих приложениях я использую RevenueCat; вся настройка, от продуктов в App Store Connect до paywall, описана на странице встроенные подписки iOS.
Что проверить перед отправкой в Apple
Это список, по которому я прохожусь перед каждой отправкой на ревью. Каждый пункт соответствует причине отказа или падению, которого можно избежать.
Первый запуск
- Удали приложение, переустанови его из TestFlight, открой. Именно так сделает ревьюер.
- Пройди онбординг целиком, ничего не пропуская.
- Откажи в каждом разрешении (уведомления, камера, геолокация) и убедись, что приложение продолжает работать.
Деньги
- Paywall показывает цены, срок и ссылки на условия использования и политику конфиденциальности.
- Покупка работает, восстановление тоже.
- Все настроенные продукты видны ревьюеру: guideline 2.1 требует, чтобы встроенные покупки были полными, видимыми и рабочими.
Сложные условия
- Авиарежим и медленная сеть: понятное сообщение, а не белый экран.
- Самый маленький и самый большой iPhone, которые ты поддерживаешь: ничего не обрезано, ничего не закрыто клавиатурой. Как раз обрезанный экран на маленьком iPhone стоил мне отказа для Solys.
- Длинные тексты, если приложение переведено.
Материалы для ревьюера
- Если приложение требует входа, демо-аккаунт в заметках для ревью, и бэкенд должен быть включён. Guideline 2.1 прямо этого требует.
- Заметки для ревью, которые в двух предложениях объясняют, что делает приложение и где найти главную функцию.
Если приложение всё же отклонили, на странице приложение отклонено Apple объясняется, как ответить и не потерять неделю. А общую картину публикации, от страницы приложения до релиза, смотри в статье публикация приложения в App Store.
Таблица проверки для твоего билда
Скачай таблицу из 16 сценариев в формате CSV. В ней разделены подготовка, действие, ожидаемый результат и наблюдаемое подтверждение. Импортируй её в Numbers, Excel или Google Sheets, затем заполни версию, устройство и результат каждой проверки.
Для вымышленного читательского дневника «сохранить страницу» недостаточно: отметь страницу 24, полностью закрой приложение, снова запусти его и найди это значение. Тест, который не был выполнен, остаётся «Нужно протестировать». Если в приложении нет подписок, укажи «Неприменимо» для сценариев покупки с этой причиной.
Таблица это отправная точка, которую нужно адаптировать, а не сертификация. Там же лежат заметки для App Review и другие бесплатные шаблоны, чтобы объяснить ревьюеру сценарий, который ты действительно проверил.
От TestFlight к App Store
TestFlight это этап, на котором приложение становится настоящим: оно работает на реальном iPhone, в руках реальных людей. В маршруте iOS Kit это второй этап: собрать ядро приложения и протестировать его на своём iPhone через TestFlight, прежде чем подключать подписки и готовить публикацию.
После TestFlight идёт ревью Apple: Apple Review Kit содержит мой чек-лист перед отправкой и заметки для ревьюера. На главной показаны четыре этапа, чтобы создать своё мобильное приложение с Claude Code.
Никто не может гарантировать, что Apple примет твоё приложение: решает Apple.
Частые вопросы
Как протестировать iPhone-приложение через TestFlight?
Загрузи билд в App Store Connect и добавь его в группу тестировщиков. С Expo ты собираешь его через EAS Build и отправляешь через EAS Submit: он появляется в TestFlight после обработки Apple, по данным Expo обычно через 10-15 минут. Тестировщики ставят его через приложение TestFlight, бесплатное в App Store. Нужен платный аккаунт Apple Developer.
Как создать ссылку TestFlight для приглашения тестировщиков?
В App Store Connect открой вкладку TestFlight своего приложения, выбери группу в разделе External Testing и нажми Create Public Link. Выбери Open to Anyone или Filter by Criteria, затем задай лимит через Set Limit. Тестировщики по публичной ссылке остаются анонимными: если хочешь знать, кто что тестировал, лучше приглашай их по e-mail.
Заменяет ли бета-ревью TestFlight ревью App Store?
Нет. Бета-ревью проверяет, что билд соответствует правилам, но финальное ревью смотрит ещё и на страницу приложения, возрастной рейтинг, подписки, юридические тексты и весь пользовательский опыт. Поэтому билд, одобренный в TestFlight, всё ещё могут отклонить при публикации. Бета-ревью запускают только внешние тестировщики, на первом билде версии: внутренние тестировщики его не проходят вообще.
Сколько тестировщиков можно пригласить в TestFlight?
Можно пригласить до 100 внутренних и до 10 000 внешних тестировщиков. Внутренние это участники твоего аккаунта App Store Connect, без бета-ревью, и каждый может установить приложение максимум на 30 устройств. Внешних приглашают по e-mail или по публичной ссылке после бета-ревью первого билда. Каждый билд доступен для тестирования 90 дней.
Можно ли протестировать подписку в TestFlight без списания денег?
Да, покупки в билде TestFlight проходят через тестовую среду Apple: деньги с тестировщиков не списываются. Продления ускорены: каждая подписка продлевается раз в день, максимум шесть раз за неделю, независимо от её реального срока. Проверь как минимум отображаемые цены, разблокировку приложения и восстановление после переустановки. Полная настройка описана на странице встроенные подписки iOS.
Что проверить в TestFlight перед отправкой приложения в Apple?
Переустанови приложение из TestFlight, как это сделает ревьюер, и пройди онбординг целиком. Откажи в каждом разрешении, проверь покупку и восстановление, затем попробуй авиарежим, самый маленький и самый большой iPhone, которые ты поддерживаешь. Если приложение требует входа, подготовь демо-аккаунт в заметках для ревью и держи бэкенд включённым.