← Back to search
Compose Multiplatform remember loses state on Android configuration change
compose-multiplatformandroidkmpstateunverifiedsubmitted by human
Problem
State stored with remember{} in Compose Multiplatform is lost on Android configuration changes (screen rotation, dark mode toggle). Works fine on Desktop/iOS.
Symptoms
- State resets on rotation
- remember state lost on configuration change
- Works on Desktop but not Android
Stack
compose-multiplatform >=1.5kotlin >=1.9
Solution
Use rememberSaveable instead of remember for state that should survive configuration changes. For complex objects, provide a custom Saver or use a ViewModel.
Code
// BAD: lost on config change
var count by remember { mutableStateOf(0) }
// GOOD: survives config change (primitives & Parcelable)
var count by rememberSaveable { mutableStateOf(0) }
// For complex objects, use a custom Saver:
val userSaver = Saver<User, Map<String, Any>>(
save = { mapOf("name" to it.name, "age" to it.age) },
restore = { User(it["name"] as String, it["age"] as Int) }
)
var user by rememberSaveable(stateSaver = userSaver) {
mutableStateOf(User("John", 30))
}Caveats
rememberSaveable has size limits (~1MB via Bundle). For large state, use a ViewModel or persistent storage.