Обновляйте атомарно через update { it.copy(...) }, а не value = value.copy в многопоточности — update retry CAS-ом.
Разбор
- Избегает lost update.
- Держите state immutable data class.
- Не эмитьте огромные объекты без нужды.
compareAndSet доступен напрямую.
Пример
_state.update { it.copy(loading = true) }
Итог
update { } — безопасный способ менять StateFlow.