Перейти к содержанию
Learning Platform
Глоссарий Troubleshooting
Урок 09.01 · 20 мин
Средний
TelegramMini AppArchitectureWebViewTON

Архитектура Mini App

Telegram Mini Apps — это революционная платформа для распространения Web3-приложений через мессенджер с 900+ миллионами пользователей. В отличие от традиционных dApps, которые требуют установки кошелька и перехода на отдельный сайт, Mini App открывается прямо в Telegram одним нажатием. Понимание архитектуры Mini Apps — это ключ к созданию приложений с массовой аудиторией.

Telegram Mini Apps (TMA) — это веб-приложения, работающие внутри мессенджера Telegram. Более 500 миллионов пользователей ежемесячно взаимодействуют с Mini App, что делает эту платформу одной из крупнейших экосистем для веб-приложений в мире.

В этом модуле мы разберём архитектуру Mini App, жизненный цикл, интеграцию с ботами и блокчейном TON.


От TWA к TMA

В 2022 году Telegram представил Telegram Web Apps (TWA) — возможность открывать веб-страницы прямо в чате. В 2024 году платформа была переименована в Mini Apps (TMA), отражая рост от простых веб-виджетов до полноценных приложений:

ПериодНазваниеВозможности
2022Telegram Web Apps (TWA)Базовый WebView, простые формы
2023TWA + PaymentsПлатежи, расширенный API
2024+Mini Apps (TMA)Stars, CloudStorage, полноценная платформа
NOTE

TWA vs TMA

“TWA” и “TMA” — это одна и та же технология. В документации и статьях вы встретите оба термина. Актуальное название — Mini App.


Архитектура: WebView, а не iframe

Mini App работает не в iframe, а в нативном WebView — встроенном браузерном движке внутри клиента Telegram. Это принципиальное архитектурное отличие:

Архитектура Mini App в Telegram
Telegram Client (iOS / Android / Desktop)
Native UI (чат, кнопки)
WebView
telegram-web-app.js
(инъекция Telegram)
Ваше Mini App (HTML/JS)

WebView обеспечивает:

  • Мост (bridge) между JavaScript вашего приложения и нативным кодом Telegram
  • Инъекцию скрипта telegram-web-app.js, создающего объект window.Telegram.WebApp
  • Контроль — Telegram управляет навигацией, кнопками, темой и жизненным циклом

Ключевые компоненты

telegram-web-app.js

Telegram автоматически инъектирует скрипт через тег <script>, который создаёт объект window.Telegram.WebApp. Этот объект — единственный интерфейс между вашим приложением и Telegram:

window.Telegram.WebApp
window.Telegram.WebApp
├── initData// данные для серверной валидации
├── initDataUnsafe// распарсенные данные (user, chat)
├── themeParams// цвета текущей темы
├── platform// "ios", "android", "tdesktop", ...
├── version// версия API
├── ready()// сигнал готовности
├── close()// закрытие Mini App
├── MainButton// главная кнопка внизу
├── BackButton// кнопка назад сверху
└── CloudStorage// облачное хранилище

@telegram-apps/sdk-react

Прямой доступ к window.Telegram.WebApp работает, но не рекомендуется для продакшена. Пакет @telegram-apps/sdk-react предоставляет:

  • TypeScript-типы для всех методов и событий
  • React-хуки для реактивной работы с API
  • Обратную совместимость между версиями Bot API
  • Mock-режим для локальной разработки без Telegram
WARNING

Используйте @telegram-apps/sdk-react

Прямой доступ к window.Telegram.WebApp не даёт типизации, может сломаться при обновлении API и не работает вне Telegram. SDK абстрагирует эти проблемы.


Платформенные ограничения

Mini App работает в контролируемом окружении, а не в обычном браузере:

ОграничениеОписание
Нет прямого localStorageИспользуйте CloudStorage API для персистентных данных
ViewportРазмер окна зависит от платформы и может меняться динамически
НавигацияНет адресной строки, кнопка “назад” управляется через BackButton API
ЗакрытиеПользователь может свайпнуть вниз для закрытия (на мобильных)
СетьВсе запросы идут через обычный интернет, не через Telegram
TIP

Для хранения данных между сессиями используйте CloudStorage API — он синхронизирует данные между устройствами пользователя через облако Telegram.


Архитектура взаимодействия

Mini App — это часть экосистемы, состоящей из четырёх компонентов:

Архитектура Mini App + Backend
Telegram Client
Bot API
Telegram API
WebView
Mini App
(frontend)
HTTPS
Ваш Backend
(валидация initData)
  1. Telegram Client загружает URL вашего Mini App в WebView
  2. Mini App получает данные пользователя через initData и отправляет их на бэкенд
  3. Backend валидирует initData через HMAC-SHA256 и взаимодействует с Telegram Bot API
  4. Telegram API обрабатывает команды бота, платежи, уведомления

Типичные сценарии использования

Mini App применяется, когда ботовых команд недостаточно:

  • Игры — полноценный игровой UI внутри Telegram
  • Платёжные интерфейсы — оплата через Telegram Stars или TON
  • DeFi-дашборды — управление активами с TON Connect
  • NFT-маркетплейсы — просмотр и торговля коллекциями
  • Формы и опросы — сложные интерфейсы ввода данных
  • Электронная коммерция — каталог товаров с корзиной
NOTE

Mini App — не самостоятельный сайт

Mini App работает только внутри контролируемого WebView Telegram. Оно не может существовать как отдельный веб-сайт — ему нужен бот, Telegram-клиент и bridge между нативным кодом и JavaScript.


Итоги

СвойствоMini AppОбычный сайт
ЗапускЧерез бота в TelegramЧерез браузер по URL
ОкружениеНативный WebViewОбычный браузер
АвторизацияinitData от TelegramЛогин/пароль или OAuth
UI-контроллыMainButton, BackButtonHTML-элементы
ХранениеCloudStorage APIlocalStorage, cookies
ПлатежиTelegram Stars (XTR)Stripe, PayPal и др.
Аудитория500M+ пользователей TelegramВесь интернет

В следующем уроке мы подробно разберём жизненный цикл Mini App — от нажатия кнопки до закрытия.


Частые ошибки

  1. Разрабатывают Mini App как обычный сайт, не адаптируя UI под мобильный контекст Telegram: размер экрана, жесты и навигация отличаются от браузера.
  2. Не используют Telegram WebApp API для интеграции с нативными функциями (BackButton, MainButton, HapticFeedback), из-за чего приложение выглядит чужеродным.
  3. Забывают вызвать Telegram.WebApp.ready() при загрузке: без этого Telegram не скроет загрузочный экран.
  4. Не валидируют initData на сервере: данные инициализации можно подделать на клиенте, что открывает возможности для атак.

После понимания технической архитектуры Mini App возникает вопрос системного дизайна: как разделить логику между ботом, бэкендом и контрактом, как продумать платежи (Stars, TON, Jetton), retention-петли и многошаговые сценарии. Это уровень System Design Mini Apps.

System Design: архитектура Mini Apps
Проверка знанийKnowledge check
Почему Mini App работает в нативном WebView, а не в iframe?
ОтветAnswer
WebView обеспечивает мост (bridge) между JavaScript приложения и нативным кодом Telegram, позволяя инъектировать telegram-web-app.js, контролировать навигацию, кнопки и тему. В iframe такой глубокой интеграции с нативным клиентом добиться невозможно.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 8