Compose Broadcast
5.89K subscribers
375 photos
95 videos
619 links
Все о Jetpack Compose и Compose Multiplatform

По сотрудничеству - @ab_manager
Download Telegram
Forwarded from Android Broadcast (Кирилл Розов)
Команда Ozon стоклнулась с проблемой скорости работы Jetpack Compose. Все это они решили, выработали практики и теперь делятся ими в статье (28 мин):
👉 Разберитесь как работает отрисовка и обновление UI в Compose
👉 Правильно выставляйте аннотации @Stable и @Immutable
👉 Правильно готовьте лямбды (не ссылку на метод) через remember
👉 Оптимизируйте функции, так чтобы они были пропускаемые в рекомпозиции
👉 Уменьшайте область рекомпозиции
👉 Быстрые вычисления при смене состояния
👉 Оптимально реализуйте собственные layout
👉 Не менять состояние, которое только что обновилось
👉 Занимайтесь отладкой и профилированием

#compose #performance
Оптимизация анимации на Compose (10 мин)

Сравнение различных API для анимации в Compose и преимущества разных подходов, ситуации когда стоит выбрать какой и какие проблемы они в себе таят. Найдете кучу полезных лайфхаков

#animation #performance
История разработчика, который копался в причинах постоянной рекомпозиции LazyList. Вся причина оказалась в модификатор clickable, а точнее composed, который лежит под ним.

Вывод - всегда анализируйте рекомпозицию вашего UI с помощью инструментов, предоставленных командой Google.

В Compose 1.5 авторы фреймворка уже устранили проблему и мигрировали Clickable модификатор на новую систему.

#performance
Уменьшаем рекомпозиции для изображений в Jetpack Compose

Разбор особенностей рекомпозиции изображений и иконок в Compose

#performance
В Jetpack Compose 1.5.5. появилась возможность в виде конфигурационого файла передать Compose Compiler типы, которые считать Stable для оптимизации работы Compose UI. В статье (6 мин, EN, ссылка без VPN) разбирается эта фича и ее влияние, а также как получить отчеты

#performance
Довольно хорошая демонстрация (EN, 7 мин, ссылка без VPN) как отслеживать какие функции в Compose слишком часто выполняются при рекомпозиции и как оптимизировать работу с помощью аннотация @Stable и @Immutable

#android #performance @compose_broadcast
Forwarded from Android Broadcast (Кирилл Розов)
Стартует интересный опыт - разработчик написал одно и тоже приложения 15 раз на разных стеках UIKit, SwiftUI, XML, Compose и Compose Multiplatform и меняя другие технологии.

🔗 Часть 1 (EN, 12 мин). Методология (Ссылка без VPN)
🔗 Часть 2 (EN, 21 мин). Результаты производительности (Ссылка без VPN)
🔗 Часть 3 (EN, 10 мин). Подведение итогов (Ссылка без VPN)

#performance @android_broadcast
Осознанная оптимизация Compose 2: В борьбе с композицией (15 мин)

В статье автор делится свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему и почитать первую часть статьи

@compose_broadcast #performance
Еще одна статья (EN, 7м) на тему советов как сделать UI на Compose быстрым. Особо ничего нового, да и ребята написали про это очень подробно и на русском на Хабре

#performance @compose_broadcast
В статье (EN, 5м) рассматриваются разные подходы к написанию собственных Modifier в Compose

🔗 Ссылка без VPN

#performance @compose_broadcast
⚙️ Приостановка композиции - новый подход к улучшению производительности

В Compose 1.9.0 появляется новое внутреннее API - PausableComposition. Оно позволит:
👉 Инкрементальная рекомпозиция: Подготовка UI, разбивая работу на части
👉 Прогрев UI: Делать подготовку UI асинхронно, до того как она кажется на экране

Обещают хорошее улучшение для LazyColumn и LazyRow

#compose #performance
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ Compose Stability Analyzer 0.7.0 🔥

Вышел крупный релиз плагина для Android Studio. Две главные фичи:

👉 Recomposition Cascade Visualizer
Правый клик на любой @Composable → "Analyze Recomposition Cascade" — и получаешь дерево всех downstream-компонентов, которые будут перерисованы. Для каждого показывается статус (skippable / non-skippable), общая статистика и максимальная глубина. Двойной клик по узлу — переход к исходнику. Работает с защитой от циклов и ограничением глубины до 10 уровней.

👉 Live Recomposition Heatmap
Прямо в редакторе, над каждой composable-функцией, в реальном времени отображается количество рекомпозиций с подключённого устройства через ADB. Цветовая индикация:
🟢 < 10 — всё ок
🟡 10–50 — стоит присмотреться
🔴 50+ — проблема

Данные читаются из TraceRecomposition событий logcat. Поддерживается несколько устройств одновременно.

#Compose #Performance
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Compose Stability Analyzer 0.10.0: Stability Doctor и trace-all

skydoves выпустил 0.10.0 с двумя фичами, которые доделывают логику инструмента.

1️⃣ Stability Doctor берёт все сигналы плагина (статику, Cascade, Reality Check, Blame) и выдаёт приоритизированный список: что чинить и в каком порядке. Без девайса — ESTIMATED (только статика), с live heatmap — MEASURED (ложные тревоги уходят вниз в рейтинге). Фиксы применяются двойным кликом с предпросмотром.

2️⃣ trace-all mode. Раньше Doctor получал runtime-данные только по @TraceRecomposition функциям, то есть видел не весь модуль. Trace-all инструментирует всё:

composeStabilityAnalyzer {
traceAll {
enabled.set(true)
threshold.set(2)
variants.set(listOf("debug"))
}
}


Release-сборки не трогает. Теперь рейтинг Doctor строится по реальным замерам на всём модуле, а не только там, где успел поставить аннотацию.

Раньше надо было самому решать что смотреть и куда ставить аннотации. Теперь включаешь trace-all, запускаешь Doctor, получаешь список с конкретными fix'ами.

🔗 doveletter.dev
🐱 GitHub

#Compose #Performance
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 В Compose 1.12.0 прокачали производительность и по бенчмарку Google, на котором тестируются все версии, уже сравнялись с View.

Очень хочется верить в то, что это реально, а также что это можно сделать просто без отладки и замера характеристик рендеринга.

#Compose #Performance
Please open Telegram to view this post
VIEW IN TELEGRAM