(#) Creating a state object during composition without using `remember`
!!! ERROR: Creating a state object during composition without using `remember`
This is an error.
Id
: `UnrememberedMutableState`
Summary
: Creating a state object during composition without using `remember`
Severity
: Error
Category
: Correctness
Platform
: Any
Vendor
: Jetpack Compose
Identifier
: androidx.compose.runtime
Feedback
: https://issuetracker.google.com/issues/new?component=612128
Min
: Lint 8.7+
Compiled
: Lint 8.7+
Artifact
: [androidx.compose.runtime:runtime-android](androidx_compose_runtime_runtime-android.md.html)
Since
: 1.5.0
Affects
: Kotlin and Java files and test sources
Editing
: This check runs on the fly in the IDE editor
Implementation
: [Source Code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:/compose/runtime/runtime-lint/src/main/java/androidx/compose/runtime/lint/UnrememberedStateDetector.kt)
Tests
: [Source Code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/UnrememberedStateDetectorTest.kt)
Copyright Year
: 2020
State objects created during composition need to be `remember`ed,
otherwise they will be recreated during recomposition, and lose their
state. Either hoist the state to an object that is not created during
composition, or wrap the state in a call to `remember`.
(##) Example
Here is an example of lint warnings produced by this check:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~text
src/androidx/compose/runtime/foo/{.kt:8:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:9:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:10:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:11:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
src/androidx/compose/runtime/foo/{.kt:15:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:16:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:17:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:18:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
src/androidx/compose/runtime/foo/{.kt:22:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:23:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:24:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:25:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
src/androidx/compose/runtime/foo/{.kt:34:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:35:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:36:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:37:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
src/androidx/compose/runtime/foo/{.kt:40:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:41:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:42:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:43:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
src/androidx/compose/runtime/foo/{.kt:49:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:50:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:51:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:52:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
src/androidx/compose/runtime/foo/{.kt:56:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:57:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:58:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:59:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
src/androidx/compose/runtime/foo/{.kt:66:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val foo = mutableStateOf(0)
--------------
src/androidx/compose/runtime/foo/{.kt:67:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val bar = mutableStateListOf<Int>()
------------------
src/androidx/compose/runtime/foo/{.kt:68:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val baz = mutableStateMapOf<Int, Float>()
-----------------
src/androidx/compose/runtime/foo/{.kt:69:Error: Creating a state object
during composition without using remember [UnrememberedMutableState]
val derived = derivedStateOf { foo.value }
--------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here is the source file referenced above:
`src/androidx/compose/runtime/foo/{.kt`:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~kotlin linenumbers
package androidx.compose.runtime.foo
import androidx.compose.runtime.*
@Composable
fun Test() {
val foo = mutableStateOf(0)
val bar = mutableStateListOf