Telegram давно перестал быть просто мессенджером: внутри него можно играть, покупать, платить и пользоваться полноценными сервисами, не устанавливая ничего из магазина приложений. Всё это работает благодаря Mini Apps — веб-приложениям, которые открываются прямо в окне Telegram. В статье разберём, что это такое, на что они способны сегодня, как их запустить, и посмотрим на живые примеры — и кодовые, и из реального мира.
Коротко
- Что это: веб-приложения внутри Telegram с доступом к платежам, хранилищам и датчикам телефона.
- Кому подходит: магазинам и сервисам, которым нужен быстрый вход без установки, и разработчикам, которые умеют делать сайты.
- Главное преимущество: вход одним касанием и аудитория около миллиарда пользователей мессенджера.
- Главный риск: зависимость от одной платформы и волна мошеннических клонов популярных игр.
Что такое Mini Apps
Mini App — это обычный сайт (HTML, CSS, JavaScript), который Telegram показывает во встроенном окне и которому даёт доступ к своим возможностям через JavaScript-объект window.Telegram.WebApp. Пользователь не ставит ничего отдельно: открыл бота — и перед ним интерфейс приложения.
Важно понимать: Mini App не существует сам по себе, он привязан к боту. Бот отвечает за запуск, уведомления и платежи, а Mini App — за интерфейс. Появилась технология в 2022 году как Web Apps (Bot API 6.0), позже была переименована и сильно выросла: сегодня это полноценная платформа с собственным каталогом, хранилищами, оплатой и доступом к датчикам устройства.
Почему это интересно разработчику:
- не нужно проходить модерацию App Store и Google Play;
- авторизация «из коробки»: Telegram сам передаёт данные пользователя;
- аудитория — около миллиарда пользователей мессенджера;
- один и тот же код работает на iOS, Android и десктопе;
- встроенная монетизация через Telegram Stars.
Как это устроено
Схема простая, из трёх частей:
- Бот — создаётся через @BotFather, получает токен.
- Фронтенд — любой сайт по HTTPS (React, Vue, Svelte или чистый JS), подключающий скрипт
telegram-web-app.js. - Бэкенд — ваш сервер, который проверяет подпись пользователя и хранит данные. Это Node.js, Python, Go — что угодно.
Telegram только показывает страницу: подлинность пользователя подтверждает ваш сервер, проверяя подпись initData токеном бота.
Способы запуска
Согласно документации, Mini App можно открыть из семи мест:
- кнопка в профиле бота;
- кнопка клавиатуры (keyboard button);
- inline-кнопка в сообщении;
- кнопка меню рядом с полем ввода;
- inline-режим;
- прямая ссылка вида
https://t.me/botusername?startapp=command; - меню вложений (attachment menu).
Прямая ссылка удобна для рекламы и шеринга: параметр startapp позволяет передать в приложение, например, ID товара или реферальный код.
Что умеет платформа
Платформа развивается быстро. Самым большим обновлением в истории стал Bot API 8.0 (ноябрь 2024), а последняя запись в официальном списке изменений на момент написания — Bot API 10.1 (июнь 2026).
- MainButton / BackButton — Нативные кнопки внизу и вверху окна (давно доступны).
- CloudStorage — Хранилище в облаке Telegram, до 1024 записей на пользователя (давно доступно).
- BiometricManager — Отпечаток пальца / Face ID для подтверждения действий (с версии 7.2 (март 2024)).
- Полноэкранный режим —
requestFullscreen()— для игр и медиа (с версии 8.0). - Ярлык на домашний экран —
addToHomeScreen()(с версии 8.0). - Геолокация и датчики — LocationManager, акселерометр, гироскоп (с версии 8.0).
- Stars: платежи, подписки, подарки — Оплата цифровых товаров внутри приложения (с версии 8.0).
- DeviceStorage / SecureStorage — Локальное и защищённое хранилище на устройстве (с версии 9.0 (апрель 2025)).
- Темы оформления — Цвета Telegram доступны как CSS-переменные (давно доступны).
Mini App, бот, сайт или нативное приложение
Mini App выигрывает там, где нужный пользователь уже сидит в Telegram, а стоимость разработки должна остаться низкой. Сравнение с альтернативами:
- Обычный бот. Установка: не нужна. Вход пользователя: только через Telegram. Интерфейс: сообщения и кнопки. Доступ к устройству: нет.
- Mini App. Установка: не нужна. Вход пользователя: данные передаёт Telegram, подпись проверяет ваш сервер. Интерфейс: любой веб-интерфейс. Доступ к устройству: частичный: геолокация, датчики, биометрия.
- Обычный сайт или PWA. Установка: не нужна (можно добавить на экран). Вход пользователя: своя регистрация. Интерфейс: любой веб-интерфейс. Доступ к устройству: зависит от браузера.
- Нативное приложение. Установка: из магазина, с модерацией. Вход пользователя: своя регистрация. Интерфейс: нативный. Доступ к устройству: полный.
Если вам нужны тяжёлые фоновые процессы, сложная графика или глубокая интеграция с системой, нативное приложение остаётся лучшим выбором.
Пример 1. Hello World
Самый минимум: страница, которая здоровается с пользователем по имени.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://telegram.org/js/telegram-web-app.js"></script>
</head>
<body>
<h1 id="hello">Загрузка…</h1>
<script>
const tg = window.Telegram.WebApp;
tg.ready(); // сообщаем Telegram, что интерфейс готов
tg.expand(); // раскрываем окно на всю высоту
const user = tg.initDataUnsafe.user;
document.getElementById("hello").textContent =
`Привет, ${user?.first_name ?? "гость"}!`;
</script>
</body>
</html>
Чтобы открыть эту страницу в Telegram, достаточно отправить кнопку через Bot API (подставьте свой токен и адрес):
curl -s "https://api.telegram.org/bot<ТОКЕН>/sendMessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": <ВАШ_CHAT_ID>,
"text": "Открыть приложение",
"reply_markup": {"inline_keyboard": [[
{"text": "Запустить", "web_app": {"url": "https://example.com/app/"}}
]]}
}'
Адрес должен быть доступен по HTTPS. Для разработки удобно пробрасывать локальный сервер через туннель (ngrok, Cloudflare Tunnel и подобные).
Пример 2. Тема, кнопки и хранилище
Хорошее Mini App выглядит как часть Telegram. Для этого цвета берут из переменных темы — они обновляются автоматически, если пользователь переключит светлую тему на тёмную:
body {
background: var(--tg-theme-bg-color);
color: var(--tg-theme-text-color);
}
.btn {
background: var(--tg-theme-button-color);
color: var(--tg-theme-button-text-color);
}
Нативные кнопки и облачное хранилище:
const tg = window.Telegram.WebApp;
// Главная кнопка внизу окна
tg.MainButton.setText("Оформить заказ");
tg.MainButton.show();
tg.MainButton.onClick(() => {
tg.sendData(JSON.stringify({ action: "checkout", items: cart }));
});
// Кнопка «назад» вверху
tg.BackButton.show();
tg.BackButton.onClick(() => history.back());
// Сохраняем прогресс в облаке Telegram
tg.CloudStorage.setItem("level", "5", (err, ok) => {
if (err) console.error(err);
});
tg.CloudStorage.getItem("level", (err, value) => {
console.log("Уровень:", value);
});
Обратите внимание: sendData() работает только для приложений, запущенных через keyboard button, и закрывает окно после отправки. Для остальных сценариев данные лучше отправлять на ваш сервер обычным запросом.
Пример 3. Проверка пользователя на сервере
Самая частая ошибка новичков — доверять initDataUnsafe. Это данные, которые легко подделать. Настоящий пользователь определяется только после проверки строки initData подписью на вашем сервере. Пример на Python:
import hashlib
import hmac
from urllib.parse import parse_qsl
def check_init_data(init_data: str, bot_token: str) -> bool:
data = dict(parse_qsl(init_data, keep_blank_values=True))
received_hash = data.pop("hash", "")
# строка проверки: пары key=value, отсортированные по ключу
check_string = "\n".join(f"{k}={v}" for k, v in sorted(data.items()))
secret = hmac.new(b"WebAppData", bot_token.encode(), hashlib.sha256).digest()
calculated = hmac.new(secret, check_string.encode(), hashlib.sha256).hexdigest()
return hmac.compare_digest(calculated, received_hash)
Клиент отправляет Telegram.WebApp.initData в заголовке или теле запроса, сервер вызывает функцию выше. Дополнительно стоит проверять поле auth_date, чтобы отсекать устаревшие данные.
Пример 4. Оплата через Telegram Stars
Telegram Stars — внутренняя валюта Telegram для цифровых товаров. Схема из двух шагов. Сначала сервер создаёт ссылку на счёт:
import requests
resp = requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/createInvoiceLink",
json={
"title": "Премиум на месяц",
"description": "Доступ ко всем функциям",
"payload": "premium-month-user-12345",
"currency": "XTR", # код Telegram Stars
"prices": [{"label": "Премиум", "amount": 100}],
},
)
invoice_link = resp.json()["result"]
Затем клиент открывает счёт внутри приложения:
tg.openInvoice(invoiceLink, (status) => {
if (status === "paid") {
// показываем «Спасибо!» и обновляем доступ
}
});
Не забудьте, что бот должен подтвердить платёж (обработать pre_checkout_query и successful_payment), а доступ выдавать только после подтверждения на стороне сервера.
Примеры из реального мира
Игры. Именно игры сделали Mini Apps массовым явлением. Notcoin показал, что кликер внутри Telegram может собрать огромную аудиторию, а Hamster Kombat в 2024 году, по разным оценкам, дошёл до примерно 300 миллионов игроков, причём в пике прибавлял по 4–5 миллионов пользователей в день. Следом пошли X Empire, Catizen, TapSwap, Blum и десятки клонов. Секрет в простой механике, реферальной системе и крипто-наградах.
Финансы и крипто. Telegram Wallet позволяет отправлять и получать криптовалюту, не выходя из мессенджера. Blum объединил торговлю и запуск токенов, а кошельки вроде Tonkeeper подключаются к Mini Apps через TON Connect.
Магазины и сервисы. Бизнес переносит в Mini Apps каталоги, запись на услуги, бронирование и программы лояльности: пользователю не нужно регистрироваться, а оплата проходит в два касания. Официальный пример от Telegram — демо-бот @DurgerKingBot, на котором можно посмотреть, как выглядит магазин внутри мессенджера.
Утилиты и сообщества. Опросы, регистрации на события, обучающие курсы, трекеры привычек, мини-CRM для небольших команд.
Плюсы и минусы
Что хорошо
- Не нужны установка и модерация магазинов приложений.
- Telegram сам передаёт данные пользователя, регистрация не нужна.
- Есть встроенная оплата через Stars, подписки и подарки.
- Один и тот же код работает на iOS, Android и десктопе.
- Прямая ссылка с параметром
startappудобна для рекламы и реферальных кампаний. - Веб-разработчику не нужно учить новый стек.
Что мешает
- Приложение живёт в WebView Telegram и ограничено тем, что платформа разрешает.
- Правила и API меняются вместе с версиями Bot API, и это вам не контролировать.
- Нужен свой сервер для проверки пользователей и платежей.
- Хайп-проекты быстро набирают аудиторию и так же быстро её теряют.
Подводные камни
- Хайп прошёл. После пика 2024 года многие tap-to-earn проекты потеряли большую часть аудитории — Hamster Kombat, по некоторым данным, упал с 300 до 12–13 млн активных пользователей в месяц. Ставка только на «вирусный кликер» сегодня рискованна; выигрывают те, кто решает реальную задачу.
- Мошенничество. Скам-боты копируют интерфейс популярных игр и просят подключить кошелёк. Никогда не подключайте основной кошелёк к незнакомым приложениям и открывайте ссылки только из официальных каналов.
- Безопасность. Всегда проверяйте
initDataна сервере, не храните секреты во фронтенде, не выдавайте платный доступ без серверного подтверждения оплаты. - Разные платформы. Поведение WebView на iOS, Android и десктопе отличается — тестируйте на всех трёх, особенно полноэкранный режим и безопасные зоны.
- Версии. Не все функции доступны в старых клиентах Telegram: проверяйте
tg.isVersionAtLeast("8.0")перед использованием новинок.
Вердикт
Mini Apps стоит попробовать, если ваш продукт укладывается в веб-интерфейс, а аудитория уже сидит в Telegram: магазин, запись на услуги, обучение, мини-сервис для сообщества. Порог входа низкий: если вы умеете делать сайты, вы умеете делать Mini Apps.
Ставить только на вирусный рост игр с наградами сегодня рискованно: прошлый хайп показал, что аудитория уходит так же быстро, как приходит. Там, где нужны тяжёлая графика или глубокая интеграция с системой, лучше оставить нативное приложение.
Источники: официальная документация Telegram Mini Apps; сводки по истории обновлений Bot API; обзоры экосистемы (WNHub, dev.to, BingX Learn, Reown, merge.rocks).
Все статьи ↗