Ответ
Функция рекомпозируется только при изменении входных аргументов. Для Stable типов Compose считает, что значение не изменилось, если:
equalsвозвращаетtrue- Все публичные свойства также
Stable
Пример:
@Stable
data class User(val name: String, val age: Int)
@Composable
fun UserProfile(user: User) {
// Рекомпозиция произойдет только если user.name или user.age изменятся
Text(text = "${user.name} (${user.age})")
}
Если User не помечен как Stable, Compose будет считать его Unstable и может пропускать рекомпозиции даже при реальных изменениях.