«Полторы секунды или меньше»: стандарты скорости для Mini App
Топ-5 причин медленного старта
- Громоздкие бандлы. Одна библиотека для дат, вторая для иконок, третья для сеток — и вот уже мегабайт JS. Убирайте дубли, используйте нативные альтернативы и SVG-спрайты. Делайте аудит зависимостей в каждом релизе.
- Латентность API. Длинные цепочки запросов и тяжёлые агрегации «тянут» TTI вниз. Лечится кэшированием, батчингом и предзаполнением данных. Размещение в VK Cloud/Яндекс.Облаке/Selectel сокращает сетевые задержки.
- Интеграции «в лоб». ЮKassa/СБП, Яндекс.Карты, 1С-Битрикс не должны блокировать первый экран. Платёж — по коллбеку, карты — по требованию, синхронизация — по расписанию. UI всегда важнее «фона».
- Изображения без адаптации. Отсутствие WebP/AVIF и srcset = лишние мегабайты и доли секунд. Готовьте много размеров, используйте lazy loading и blur-плейсхолдеры. Это даёт ощущение «моментального» старта.
- Кеш «забыт». Повторные визиты не должны чувствоваться как первые. Service Worker + Cache API + корректные заголовки возвращают интерфейс мгновенно, а обновления подкачиваются незаметно.
План ускорения до 1,5 сек
- Критический путь. Выделите элементы, без которых невозможно взаимодействие (навигация, CTA, форма). Отдавайте их первыми, остальное загружайте после Ready. Измеряйте Long Tasks и устраняйте «пробки» в мейн-треде.
- Архитектура API. Сократите чаты запросов: объединяйте, кэшируйте, валидируйте. В тяжёлых местах — очереди и фоновые воркеры. Контролируйте перцентиль p95: если он уехал, пользователи «в хвосте» уже страдают.
- Интеграции по уму. ЮKassa и СБП работайте через асинхронные уведомления, UI реагирует сразу. Яндекс.Карты/2ГИС — только на гео-экранах, SDK подгружается динамически. 1С-Битрикс — обмен вне запроса первого экрана.
- Сжатие и протоколы. Включите Brotli/HTTP/2/3, настройте preconnect к доменам карт и платежей. Проверьте, не тянете ли один и тот же файл с разных хостов. Это типичная «скрытая» потеря.
- Клиентский кеш и офлайн. Статика и шрифты — из локального кеша, данные — через stale-while-revalidate. Второй визит фактически моментальный, а TTI стабилен. Добавьте «умное» обновление, чтобы не блокировать UI.
- Перф-QA и мониторинг. Lighthouse/WebPageTest/Яндекс.Танк — до релиза и после. Метрики отправляйте в Яндекс.Метрику: делайте дашборды по устройствам и сетям. Перф-баги — такие же баги с приоритетами.
Ошибки, которые дорого стоят
- Карта на первом экране. Загрузка SDK Яндекс.Карт ради маленькой пин-иконки — частая ошибка. Ставьте иллюстрацию-заглушку, карту открывайте по клику.
- Нет таймаутов на платежах. Если СБП/ЮKassa тормозит, UI не должен «зависать». Делайте ретраи и информируйте пользователя.
- Отсутствие A/B-проверок. Иногда перерисовка первого экрана экономит полсекунды. Тестируйте гипотезы на реальной аудитории.
Два лаконичных кейса
— E-commerce: кеш + WebP → TTI 1,3 сек, рост конверсии на 15%. — Доставка: карты по требованию → TTI 1,4 сек вместо 3,1 сек.
Наша компания занимается разработкой Mini App и полным циклом разработки и тестирования мини-приложений. Мы проектируем Mini App для Telegram, которые стабильно укладываются в TTI < 1,5 сек с учётом интеграций с российскими сервисами и реальных пиковых нагрузок.