Защищён ли доступ с первого экрана?
Перечислите все способы, которыми люди открывают Mini App, — кнопку в боте, меню, ссылку в канале, — и клиенты Telegram, которые вы собираетесь поддерживать. Для каждой точки входа проверьте, что приложение открывается в правильном состоянии и показывает нужное содержимое. Если Mini App можно открыть и по прямой ссылке, проверьте этот путь отдельно: пользователь может прийти без того контекста, который обычно передаёт бот. Эта проверка входит в любую разработку Telegram Mini Apps перед выпуском.
Telegram передаёт приложению данные запуска, а в документации описано, как проверять их на сервере. Следуйте актуальным рекомендациям и проверяйте права на каждое защищённое действие тоже на сервере, а не только скрывая кнопки в интерфейсе. Отдельно проверьте, что происходит с устаревшими или неверными данными запуска и с пользователем, который вернулся спустя время: он должен увидеть понятное сообщение, а не пустой экран или необъяснимую ошибку.
Токен бота и серверные ключи не должны попадать в код, который выполняется на устройстве пользователя. Всё, что отправлено клиенту, можно изучить, поэтому секреты хранятся только на сервере. Если ключ всё же попал в клиентский код, считайте его скомпрометированным и замените. И наконец, решите, что приложение скажет, если сеанс не удалось принять, и куда оно направит человека дальше.
Выдерживает ли интерфейс реальные устройства?
Mini App работает внутри каждого клиента Telegram, и один и тот же экран может выглядеть и вести себя по-разному на разных устройствах. Проверьте светлую и тёмную темы, безопасные области на телефонах с вырезами, экранную клавиатуру, которая закрывает поля ввода, и работу кнопки «Назад». Если приложение использует системные элементы Telegram, например главную кнопку, проверьте, как они ведут себя на каждом шаге. Браузер на компьютере удобен для разработки, но он не отражает всех сред Telegram, поэтому тестируйте в тех клиентах, которыми пользуется ваша аудитория.
Затем пройдите неприятные состояния: медленную загрузку, пустые результаты поиска, запрос, который нужно повторить, операцию, прерванную на середине. В каждом случае приложение должно объяснять, что происходит и что пользователь может сделать. Бесконечно крутящийся индикатор загрузки — одна из самых частых причин, по которым люди бросают задачу.
Не забудьте и о базовой доступности. Важные действия должны оставаться понятными при крупном системном шрифте и на узком экране, а смысл кнопок не должен передаваться одним только цветом.
Правильно ли каждая задача завершается на сервере?
Проследите каждую основную задачу до конца. Создана ли запись на сервере? Прошла ли передача данных в CRM или систему заказов? Видит ли пользователь правильный итоговый статус? Аккуратный экран подтверждения мало что значит, если данные так и не дошли. Проверяйте это не только на пустых тестовых данных, но и на записи, максимально похожей на настоящую.
Если Mini App принимает оплату, проверьте, к какой категории относится товар по действующим правилам Telegram, как приходит и проверяется подтверждение оплаты и начинается ли исполнение заказа только после этого подтверждения. Для цифровых и физических товаров правила разные, поэтому сверяйтесь с официальной документацией для своего случая.
До выпуска решите, кто следит за работой приложения, кто разбирает сбои и кто отвечает за обновления. Запишите, как команда узнает о проблемах после запуска — из журналов ошибок, оповещений или обращений в поддержку, — чтобы сбой заметили внутри компании раньше, чем начнут жаловаться клиенты. Mini App готово к запуску, когда проверены и основной путь пользователя, и путь восстановления после сбоя — в том объёме, который вы определили в начале, — а не тогда, когда нарисован последний экран.
Чек-лист: запуск Mini App
- Проверяйте данные запуска на сервере и права на каждое защищённое действие.
- Не допускайте токенов и серверных ключей в код, который получает клиент.
- Проверьте нужные клиенты, темы, безопасные области, клавиатуру и кнопку «Назад».
- Протестируйте ошибки, повторные запросы и прерванные действия.
- Убедитесь в серверном результате каждой задачи и назначьте, кто сопровождает приложение после запуска.
Пример: прерванный и продолженный заказ
Пользователь начинает оформлять заказ на телефоне, закрывает Mini App на середине и возвращается через час. Тот же незавершённый заказ восстанавливается вместе с уже выбранными товарами. Когда при слабой связи человек дважды нажимает «Подтвердить», создаётся только один заказ. Когда сервер ненадолго недоступен, приложение прямо об этом говорит и предлагает повторить попытку.
Если оформление оплаты входит в проект, тот же прогон проверяет и подтверждение платежа, и начало исполнения заказа.


