В бета-версии Telegram 13.2 для Android заработали экспериментальные интерактивные сообщения на HTML, CSS и JavaScript. Они отображаются непосредственно в переписке, без перехода в отдельное мини-приложение. Публичного API и общего доступа для разработчиков пока нет, возможность отправки виджетов ограничена. Компоненты для их тестирования также обнаружили в бета-версии клиента для iOS.
В октябре HTMLBubbles впервые заметили в бета-версии Telegram для macOS. 4 ноября издание Digital Hustlers сообщило, что виджеты работают в Android 13.2, а в iOS появились инструменты для их тестирования. Авторы собрали собственный виджет и проверили выполнение JavaScript и базовых функций веб-страниц.
Репозиторий widget-sandbox содержит среду для запуска таких сообщений. Каждый виджет представляет собой самостоятельный HTML-документ со встроенными стилями и JavaScript. Его размер не должен превышать 4 КБ в сжатом и 32 КБ в распакованном виде.
Читайте также
Для выполнения JavaScript Telegram использует отдельный изолированный движок QuickJS, а не обычный браузер. У виджета нет доступа к сети: запросы через fetch, XHR и WebSocket заблокированы. Все его операции проверяются по списку разрешённых возможностей. Поля ввода с экранной клавиатурой и подключаемые сторонние библиотеки не поддерживаются.
Среда также ограничивает потребление ресурсов: документация указывает лимит памяти 64 МБ, не более 256 таймеров и квоту процессорного времени. Если сообщение уходит за пределы экрана, выполнение приостанавливается. При принудительной остановке клиент сохраняет последний отрисованный кадр.
Документация формата описывает технический протокол для отправки виджетов ботами, в том числе в инлайн-режиме, и обновления состояния уже отправленного блока. Однако публичного API для разработчиков пока нет, а SDK первой версии не поддерживает отправку сообщений из виджета боту. Поэтому использовать такие блоки в обычных ботах и мини-приложениях пока нельзя. Срок полноценного запуска Telegram не объявлял.