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.

Как это устроено

Схема простая, из трёх частей:

  1. Бот — создаётся через @BotFather, получает токен.
  2. Фронтенд — любой сайт по HTTPS (React, Vue, Svelte или чистый JS), подключающий скрипт telegram-web-app.js.
  3. Бэкенд — ваш сервер, который проверяет подпись пользователя и хранит данные. Это 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).

Все статьи ↗