Jetpack Compose Runtime is introducing a new `retain` API that allows plain Kotlin objects to survive configuration changes without extending Android's ViewModel class. Unlike `remember` (survives recomposition only) and `rememberSaveable` (survives config changes via saved state), `retain` keeps arbitrary objects alive across Activity recreation with no Android lifecycle dependency. This makes state holders more reusable, framework-independent, and Kotlin Multiplatform-friendly. However, `retain` does not replace ViewModel entirely — ViewModel still provides `viewModelScope`, `SavedStateHandle`, Hilt injection, navigation integration, and lifecycle-aware cleanup. The guidance is to use `retain` for framework-independent state holders and multiplatform scenarios, and stick with ViewModel when Android-specific features are needed.