Разработчик экспериментального клиента Telegram GhostGram на Kotlin Multiplatform столкнулся с проблемами при воспроизведении TGS-стикеров на Android. Использование библиотеки Compottie приводило к высокой нагрузке на графический конвейер и некорректной скорости анимации, которая была в два-три раза выше, чем в официальном приложении.

Для оптимизации был внедрен подход «запекания» кадров (Frame Baking). Вместо постоянной обработки векторной композиции система заранее подготавливает кадры в формате Bitmap с помощью Airbnb Lottie в фоновом потоке. Готовые изображения воспроизводятся как последовательность через Canvas, что снижает нагрузку на отрисовку в реальном времени.

Кэширование реализовано через LRU-кэш с лимитом 24 MiB. Размер каждого кадра составляет 260 на 260 пикселей, а количество кадров ограничено 90 единицами при целевой частоте 30 FPS. Плеер использует withFrameNanos для синхронизации с циклом отрисовки Compose, что позволяет адаптироваться к задержкам воспроизведения.

В архитектуру добавлена поддержка отмены корутин при прокрутке списка, что позволяет освобождать память от неактуальных кадров. Для синхронизации подготовки изображений используется Mutex. При этом Desktop-версия приложения продолжает использовать Compottie, а Frame Baking применяется только в Android-реализации.

Тестирование на устройстве с процессором Unisoc T606 показало, что в статичном режиме GhostGram удерживает график HWUI в желтой зоне стабильнее официального клиента. Тем не менее, при активном скролле списка иногда возникают пиковые нагрузки, причины которых требуют дополнительного профилирования.