# androidx.savedstate.serialization

*** ** * ** ***

Common/All

## Classes

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` | Configuration of the current `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` configured with `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration.Builder`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration.Builder` | Builder of the `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` instance provided by `SavedStateConfig { ... }` factory function. | Cmn |

## Objects

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/ClassDiscriminatorMode` | Defines which classes and objects should have their serial name included in the `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` as a class discriminator. | Cmn |

## Top-level functions summary

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` | `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)( from: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration, builderAction: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration.Builder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Creates an instance of `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)` configured from the optionally given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)` and adjusted with `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)`. | Cmn |
| `inline T` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)( savedState: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration )` Decode a serializable object from a `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` with the default deserializer. | Cmn |
| `T` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)( deserializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-deserialization-strategy/index.html<T>, savedState: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration )` Decodes and deserializes the given `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` to the value of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)` using the given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`. | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)( value: T, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration )` Serializes the `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` into an equivalent `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` using `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` retrieved from the reified type parameter. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)( serializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-strategy/index.html<T>, value: T, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration )` Serializes and encodes the given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` to `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` using the given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)`. | Cmn |

## Extension functions summary

|---|---|---|
| `inline https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, T>` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner.https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#(androidx.savedstate.SavedStateRegistryOwner).saved(kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration, noinline init: () -> T )` Returns a property delegate that manages the saving and restoring of a value of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#(androidx.savedstate.SavedStateRegistryOwner).saved(kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` within the `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistry` of this `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner`. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, T>` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner.https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#(androidx.savedstate.SavedStateRegistryOwner).saved(kotlinx.serialization.KSerializer,kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)( serializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<T>, key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration, init: () -> T )` Returns a property delegate that manages the saving and restoring of a value of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#(androidx.savedstate.SavedStateRegistryOwner).saved(kotlinx.serialization.KSerializer,kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` within the `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistry` of this `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner`. | Cmn |

## Top-level functions

### SavedStateConfiguration

Cmn Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateConfiguration.kt+function:SavedStateConfiguration) Added in [1.3.0](https://developer.android.com/jetpack/androidx/releases/savedstate#1.3.0)

```
fun SavedStateConfiguration(
    from: SavedStateConfiguration = SavedStateConfiguration.DEFAULT,
    builderAction: SavedStateConfiguration.Builder.() -> Unit
): SavedStateConfiguration
```

Creates an instance of `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)` configured from the optionally given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)` and adjusted with `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)`.

```kotlin
import androidx.savedstate.serialization.SavedStateConfiguration
import androidx.savedstate.serialization.decodeFromSavedState
import androidx.savedstate.serialization.encodeToSavedState

val config = SavedStateConfiguration {
    serializersModule = SerializersModule {
        polymorphic(Any::class) { subclass(String::class) }
    }
}
val value = "foo"
val encoded =
    encodeToSavedState(
        serializer = PolymorphicSerializer(Any::class),
        value = value,
        configuration = config,
    )
val decoded =
    decodeFromSavedState(
        deserializer = PolymorphicSerializer(Any::class),
        savedState = encoded,
        configuration = config,
    )
```

| Parameters |
|---|---|
| `from: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = SavedStateConfiguration.DEFAULT` | An optional initial `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)` to start with. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `builderAction: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration.Builder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | A lambda function to configure the `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration.Builder` for additional customization. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` | A new `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#SavedStateConfiguration(androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function1)` instance configured based on the provided parameters. |

### decodeFromSavedState

Cmn Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateDecoder.kt+function:decodeFromSavedState)

```
inline fun <T : Any?> decodeFromSavedState(
    savedState: SavedState,
    configuration: SavedStateConfiguration = SavedStateConfiguration.DEFAULT
): T
```

Decode a serializable object from a `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` with the default deserializer.

**Format not stable:** The internal structure of the given `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` is subject to change in future releases for optimization. While it is guaranteed to be compatible with `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)`, direct manipulation of its encoded format using keys is not recommended.

```kotlin
import androidx.savedstate.serialization.decodeFromSavedState

@Serializable data class User(val id: Int, val name: String)
val user = decodeFromSavedState<User>(userSavedState)
```

| Parameters |
|---|---|
| `savedState: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` to decode from. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = SavedStateConfiguration.DEFAULT` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |

| Returns |
|---|---|
| `T` | The decoded object. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any decoding-specific error. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the decoded input is not a valid instance of `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` |   |

### decodeFromSavedState

Cmn Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateDecoder.kt+function:decodeFromSavedState)

```
fun <T : Any?> decodeFromSavedState(
    deserializer: DeserializationStrategy<T>,
    savedState: SavedState,
    configuration: SavedStateConfiguration = SavedStateConfiguration.DEFAULT
): T
```

Decodes and deserializes the given `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` to the value of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)` using the given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`.

**Format not stable:** The internal structure of the given `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` is subject to change in future releases for optimization. While it is guaranteed to be compatible with `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`, direct manipulation of its encoded format using keys is not recommended.

```kotlin
import androidx.savedstate.serialization.SavedStateConfiguration
import androidx.savedstate.serialization.decodeFromSavedState
import androidx.savedstate.serialization.encodeToSavedState

val config = SavedStateConfiguration {
    serializersModule = SerializersModule {
        polymorphic(Any::class) { subclass(String::class) }
    }
}
val value = "foo"
val encoded =
    encodeToSavedState(
        serializer = PolymorphicSerializer(Any::class),
        value = value,
        configuration = config,
    )
val decoded =
    decodeFromSavedState(
        deserializer = PolymorphicSerializer(Any::class),
        savedState = encoded,
        configuration = config,
    )
```

| Parameters |
|---|---|
| `deserializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-deserialization-strategy/index.html<T>` | The deserializer to use. |
| `savedState: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` to decode from. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = SavedStateConfiguration.DEFAULT` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |

| Returns |
|---|---|
| `T` | The deserialized object. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any decoding-specific error. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if the decoded input is not a valid instance of `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(kotlinx.serialization.DeserializationStrategy,androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` |   |

### encodeToSavedState

Cmn Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateEncoder.kt+function:encodeToSavedState)

```
inline fun <T : Any?> encodeToSavedState(
    value: T,
    configuration: SavedStateConfiguration = SavedStateConfiguration.DEFAULT
): SavedState
```

Serializes the `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` into an equivalent `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` using `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` retrieved from the reified type parameter.

**Format not stable:** The internal structure of the returned `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` is subject to change in future releases for optimization. While it is guaranteed to be compatible with `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`, direct manipulation of its encoded format using keys is not recommended.

```kotlin
import androidx.savedstate.serialization.encodeToSavedState

@Serializable data class User(val id: Int, val name: String)
val user = User(123, "foo")
val savedState = encodeToSavedState(user)
```

| Parameters |
|---|---|
| `value: T` | The serializable object to encode. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = SavedStateConfiguration.DEFAULT` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` | The encoded `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any encoding-specific error. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)` |   |

### encodeToSavedState

Cmn Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateEncoder.kt+function:encodeToSavedState)

```
fun <T : Any?> encodeToSavedState(
    serializer: SerializationStrategy<T>,
    value: T,
    configuration: SavedStateConfiguration = SavedStateConfiguration.DEFAULT
): SavedState
```

Serializes and encodes the given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)` to `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` using the given `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#encodeToSavedState(kotlinx.serialization.SerializationStrategy,kotlin.Any,androidx.savedstate.serialization.SavedStateConfiguration)`.

**Format not stable:** The internal structure of the returned `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` is subject to change in future releases for optimization. While it is guaranteed to be compatible with `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)`, direct manipulation of its encoded format using keys is not recommended.

```kotlin
import androidx.savedstate.serialization.SavedStateConfiguration
import androidx.savedstate.serialization.encodeToSavedState

val config = SavedStateConfiguration {
    serializersModule = SerializersModule {
        polymorphic(Any::class) { subclass(String::class) }
    }
}
val value = "foo"
val encoded =
    encodeToSavedState(
        serializer = PolymorphicSerializer(Any::class),
        value = value,
        configuration = config,
    )
```

| Parameters |
|---|---|
| `serializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-strategy/index.html<T>` | The serializer to use. |
| `value: T` | The serializable object to encode. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = SavedStateConfiguration.DEFAULT` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` | The encoded `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState`. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serialization-exception/index.html` | in case of any encoding-specific error. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#decodeFromSavedState(androidx.savedstate.SavedState,androidx.savedstate.serialization.SavedStateConfiguration)` |   |

## Extension functions

### SavedStateRegistryOwner.saved

Cmn Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateRegistryOwnerDelegate.kt+function:saved)

```
inline fun <T : Any?> SavedStateRegistryOwner.saved(
    key: String? = null,
    configuration: SavedStateConfiguration = SavedStateConfiguration.DEFAULT,
    noinline init: () -> T
): ReadWriteProperty<Any?, T>
```

Returns a property delegate that manages the saving and restoring of a value of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#(androidx.savedstate.SavedStateRegistryOwner).saved(kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` within the `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistry` of this `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner`.

```kotlin
import androidx.activity.ComponentActivity

@Serializable data class User(val id: Int, val name: String)
class MyActivity : ComponentActivity() {
    val user by saved(key = "myKey") { User(id = 123, name = "John Doe") }
}
```

| Parameters |
|---|---|
| `key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | An optional `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` key to use for storing the value in the `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistry`. A default key will be generated if it's omitted or when 'null' is passed. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = SavedStateConfiguration.DEFAULT` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `noinline init: () -> T` | The function to provide the initial value of the property. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, T>` | A property delegate provider that manages the saving and restoring of the value. |

### SavedStateRegistryOwner.saved

Cmn Artifact: [androidx.savedstate:savedstate](https://developer.android.com/jetpack/androidx/releases/savedstate) [View Source](https://cs.android.com/search?q=file:androidx/savedstate/serialization/SavedStateRegistryOwnerDelegate.kt+function:saved) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/savedstate#1.4.0)

```
fun <T : Any?> SavedStateRegistryOwner.saved(
    serializer: KSerializer<T>,
    key: String? = null,
    configuration: SavedStateConfiguration = SavedStateConfiguration.DEFAULT,
    init: () -> T
): ReadWriteProperty<Any?, T>
```

Returns a property delegate that manages the saving and restoring of a value of type `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/package-summary#(androidx.savedstate.SavedStateRegistryOwner).saved(kotlinx.serialization.KSerializer,kotlin.String,androidx.savedstate.serialization.SavedStateConfiguration,kotlin.Function0)` within the `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistry` of this `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistryOwner`.

```kotlin
import androidx.activity.ComponentActivity

@Serializable data class User(val id: Int, val name: String)
class MyActivity : ComponentActivity() {
    val user by
        saved(key = "myKey", serializer = serializer()) { User(id = 123, name = "John Doe") }
}
```

| Parameters |
|---|---|
| `serializer: https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html<T>` | The `https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-k-serializer/index.html` to use for serializing and deserializing the value. |
| `key: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | An optional `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` key to use for storing the value in the `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedStateRegistry`. A default key will be generated if it's omitted or when 'null' is passed. |
| `configuration: https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration = SavedStateConfiguration.DEFAULT` | The `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration` to use. Defaults to `https://developer.android.com/reference/kotlin/androidx/savedstate/serialization/SavedStateConfiguration#DEFAULT()`. |
| `init: () -> T` | The function to provide the initial value of the property. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.properties/-read-write-property/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?, T>` | A property delegate provider that manages the saving and restoring of the value. |