# rememberSerializable

Common/All

## Functions summary

|---|---|---|
| `inline T` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration, noinline init: () -> T )` Remember the value produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and persist it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for saving and restoring via the saved instance state mechanism. | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState<T>` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration, noinline init: () -> https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState<T> )` Remember a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState` produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and persist it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` from `kotlinx.serialization`. | Cmn |
| `T` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, serializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<T>, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration, init: () -> T )` Remember the value produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and persist it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for saving and restoring via the saved instance state mechanism. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState<T>` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, stateSerializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<T>, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration, init: () -> https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState<T> )` Remember the value produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and save it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` from kotlinx.serialization. | Cmn |

## Functions

### rememberSerializable

Cmn Artifact: [androidx.compose.runtime:runtime-saveable](https://developer.android.com/jetpack/androidx/releases/compose-runtime) [View Source](https://cs.android.com/search?q=file:androidx/compose/runtime/saveable/RememberSerializable.kt+function:rememberSerializable)

```
@Composable
inline fun <T : Any> rememberSerializable(
    vararg inputs: Any?,
    configuration: SavedStateConfiguration = DEFAULT,
    noinline init: () -> T
): T
```

Remember the value produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and persist it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for saving and restoring via the saved instance state mechanism.

This function automatically finds a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for the `reified` type `T`, making it a convenient way to use `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)` with types that are `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.io/-serializable/index.html`.

This behaves similarly to `https://developer.android.com/reference/kotlin/androidx/compose/runtime/remember.composable#remember(kotlin.Function0)`, but will survive configuration changes (such as screen rotations) and process death by saving the value into the instance state.

```kotlin
import androidx.compose.runtime.saveable.rememberSerializable

val holder = rememberSerializable(serializer = HolderSerializer) { Holder(0) }
```

| Parameters |
|---|---|
| `vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A set of inputs which, when changed, will cause the stored state to reset and `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` to be re-executed. Note that previously saved values are not validated against these inputs during restoration. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = DEFAULT` | Optional `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to customize how the serialized data is stored and restored. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `noinline init: () -> T` | A factory function used to provide the initial value when no previously saved value exists. |

| Returns |
|---|---|
| `T` | The remembered and possibly restored value. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` |   |

### rememberSerializable

Cmn Artifact: [androidx.compose.runtime:runtime-saveable](https://developer.android.com/jetpack/androidx/releases/compose-runtime) [View Source](https://cs.android.com/search?q=file:androidx/compose/runtime/saveable/RememberSerializable.kt+function:rememberSerializable)

```
@Composable
inline fun <T : Any?> rememberSerializable(
    vararg inputs: Any?,
    configuration: SavedStateConfiguration = DEFAULT,
    noinline init: () -> MutableState<T>
): MutableState<T>
```

Remember a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState` produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and persist it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` from `kotlinx.serialization`.

This function automatically finds a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for the `reified` type `T`, making it a convenient way to use `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)` with types that are `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.io/-serializable/index.html`.

This behaves similarly to `https://developer.android.com/reference/kotlin/androidx/compose/runtime/remember.composable#remember(kotlin.Function0)`, but the state will survive configuration changes (like screen rotations) and process recreation. It is designed for state types that cannot be stored in a `Bundle` directly but can be serialized.

This overload is intended for nullable types, while the overload without `@JvmName` is for non-nullable types.

| Parameters |
|---|---|
| `vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A set of inputs which, when changed, will cause the stored state to reset and `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` to be re-executed. Note that previously saved values are not validated against these inputs during restoration. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = DEFAULT` | Optional `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to customize how the serialization is handled, such as specifying a custom format (e.g. JSON). Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `noinline init: () -> https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState<T>` | A factory function to produce the initial `MutableState` to be remembered. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState<T>` | The remembered and possibly restored `MutableState`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSerializable.composable#rememberSerializable(kotlin.Array,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` |   |

### rememberSerializable

Cmn Artifact: [androidx.compose.runtime:runtime-saveable](https://developer.android.com/jetpack/androidx/releases/compose-runtime) [View Source](https://cs.android.com/search?q=file:androidx/compose/runtime/saveable/RememberSerializable.kt+function:rememberSerializable)

```
@Composable
fun <T : Any> rememberSerializable(
    vararg inputs: Any?,
    serializer: KSerializer<T>,
    configuration: SavedStateConfiguration = DEFAULT,
    init: () -> T
): T
```

Remember the value produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and persist it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` for saving and restoring via the saved instance state mechanism.

This behaves similarly to `https://developer.android.com/reference/kotlin/androidx/compose/runtime/remember.composable#remember(kotlin.Function0)`, but will survive configuration changes (such as screen rotations) and process death by saving the value into the instance state using a serializer from Kotlinx Serialization.

The value will be serialized using the provided `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and the way it's saved can be customized using `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`.

If the type cannot be automatically handled by a default `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver`, this overload provides a simpler and type-safe way to persist complex or custom types using Kotlinx Serialization.

```kotlin
import androidx.compose.runtime.saveable.rememberSerializable

val holder = rememberSerializable(serializer = HolderSerializer) { Holder(0) }
```

| Parameters |
|---|---|
| `vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A set of inputs which, when changed, will cause the stored state to reset and `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` to be re-executed. Note that previously saved values are not validated against these inputs during restoration. |
| `serializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<T>` | A `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` used to serialize and deserialize the value. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = DEFAULT` | Optional `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to customize how the serialized data is stored and restored. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `init: () -> T` | A factory function used to provide the initial value when no previously saved value exists. |

| Returns |
|---|---|
| `T` | The remembered and possibly restored value. |

### rememberSerializable

Cmn Artifact: [androidx.compose.runtime:runtime-saveable](https://developer.android.com/jetpack/androidx/releases/compose-runtime) [View Source](https://cs.android.com/search?q=file:androidx/compose/runtime/saveable/RememberSerializable.kt+function:rememberSerializable)

```
@Composable
fun <T : Any?> rememberSerializable(
    vararg inputs: Any?,
    stateSerializer: KSerializer<T>,
    configuration: SavedStateConfiguration = DEFAULT,
    init: () -> MutableState<T>
): MutableState<T>
```

Remember the value produced by `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)`, and save it across activity or process recreation using a `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` from kotlinx.serialization.

This behaves similarly to `https://developer.android.com/reference/kotlin/androidx/compose/runtime/remember.composable#remember(kotlin.Function0)`, but the value will survive configuration changes (like screen rotations) and process recreation by saving it in the instance state using a serialization-based mechanism.

This overload is intended for cases where the state type cannot be stored directly in a Bundle, but can be serialized with `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html`. This is particularly useful for custom or complex data types that are `@Serializable`.

This overload is intended for nullable types, while the overload without `@JvmName` is for non-nullable types.

| Parameters |
|---|---|
| `vararg inputs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | A set of inputs such that, when any of them have changed, the state will reset and `https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/package-summary#rememberSerializable(kotlin.Array,kotlinx.serialization.KSerializer,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` will be rerun. Note: state restoration does NOT validate against inputs used before the value was saved. |
| `stateSerializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<T>` | A `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` used to serialize and deserialize the state value. The value must be marked with `@Serializable`. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = DEFAULT` | Optional `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to customize how the serialization is handled, such as specifying a custom format (e.g. JSON). |
| `init: () -> https://developer.android.com/reference/kotlin/androidx/compose/runtime/MutableState<T>` | A factory function to produce the initial value to be remembered and saved. |