Compose stabilityConfigurationPath 🌚
Что за зверь? 😼
В compose-compiler 1.5.4 добавили новую фичу stabilityConfigurationPath, которая позволяет самому описать какие-то классы и они будут считаться compose компилятором как Stable.
2 недели спустя: релиз 1.5.5 c багфиксом https://android-review.googlesource.com/c/platform/frameworks/support/+/2823752
Погнали тестить
Где может быть полезно?
Например, для third-party классов в библиотеках, в которых вы не можете повесить аннотацию @Stable 🌚
Рассмотрим пример интеграции Google Maps в compose проект, там часто приходится работать с LatLng моделькой
Допустим есть функция
Если запустить метрики, то будет такая картина
Чтобы пофиксить, можно сделать класс обертку со @Stable аннотацией
Если запустим метрики, то функция станет skippable, а параметр stable.
Используем конфиг
С новым подходом можно выкинуть класс обертку и в отдельном файле указать класс или package, который должен быть стабильным.
- создаем конфиг файл в проекте
2. Указываем нужный класс
3. В рутовом build.gradle.kts добавляем compiler аргумент и пробрасываем путь к конфигу
Все, теперь compose считает, что этот класс является стабильным 🌚