Все посты
TelegramMobileProduct

Строить там, где уже есть пользователи: Telegram Mini Apps

Опубликовано 20 марта 2026 г. · 5 мин чтения

Проблема дистрибуции

Вот в чём дело со строительством для Центральной Азии: ваши пользователи уже в Telegram. Не "некоторые пользователи" — практически все. Проникновение Telegram здесь не такое, как где-либо ещё. Так что когда я думал, как распространить пользовательский интерфейс бронирования BookUp, ответ был довольно очевидным.

Зачем убеждать кого-то скачивать приложение или запоминать URL, когда они всё равно будут в Telegram?

Что мы на самом деле построили

Для BookUp Telegram Mini App — это основной клиентский интерфейс. Кто-то хочет забронировать в барбершопе — открывает бота, мини-приложение загружается внутри Telegram, выбирает время, готово. Никакого нового приложения для установки. Никакого логина — Telegram управляет идентификацией.

MyPolis использует аналогичный подход для гражданской платформы. Приложение для знакомств, которое я построил, тоже работало как TMA. Каждый раз одна и та же логика: встречайте пользователей там, где они есть.

Auth-поток на самом деле умный

Способ, которым Telegram передаёт идентификацию пользователя в мини-приложение, интересен. При загрузке приложения Telegram инжектирует строку initData в JavaScript-контекст. Она содержит данные пользователя (ID, имя, username) и хеш.

Для проверки подлинности нужно провалидировать HMAC:

После верификации на бэкенде можно доверять идентификации пользователя и выдавать собственный сессионный токен.

Особенности, которые вас поймают

Кнопка назад — ненастоящая. Telegram предоставляет "кнопку назад" в заголовке, но это не реальная кнопка браузера — это событие, которое нужно обрабатывать в JavaScript.

Клавиатура на iOS... особенная. Когда текстовый ввод получает фокус на iOS внутри Telegram Mini App, viewport смещается иначе, чем в обычном Safari WebView. Много багов "ввод скрыт за клавиатурой".

Layout viewport vs visual viewport. Telegram предоставляет window.Telegram.WebApp.viewportStableHeight — используйте его для layout.

Переменные темы — подарок. Telegram передаёт CSS-переменные для текущей темы пользователя. Использование их делает приложение нативным для скина Telegram пользователя.

Честные плюсы и минусы

Плюсы: почти нулевое трение дистрибуции, не нужна проверка App Store, мгновенные обновления, идентификация бесплатно, пользователи уже там.

Минусы: вы строите внутри чужого контейнера. Telegram может изменить API. Отладка сложнее.

Для рынков, на которые я строю, плюсы явно побеждают.