Start native apps faster with the Composables CLI ->
Composable Function

rememberSerializable

Remember the value produced by init, and persist it across activity or process recreation using a KSerializer for saving and restoring via the saved instance state mechanism.

RememberSaveableWithSerializer

@Sampled
@Composable
fun RememberSaveableWithSerializer() {
    val holder = rememberSerializable(serializer = HolderSerializer) { Holder(0) }
}

RememberSaveableWithSerializerAndMutableState

@Sampled
@Composable
fun RememberSaveableWithSerializerAndMutableState() {
    val holder =
        rememberSerializable(stateSerializer = HolderSerializer) { mutableStateOf(Holder(0)) }
}

private data class Holder(var value: Int)

private val HolderSaver = Saver<Holder, Int>(save = { it.value }, restore = { Holder(it) })

private object HolderSerializer : KSerializer<Holder> {

    private val valueSerializer = Int.serializer()

    override val descriptor =
        buildClassSerialDescriptor(Holder::class.qualifiedName!!) {
            element("value", PrimitiveSerialDescriptor("value", PrimitiveKind.INT))
        }

    override fun serialize(encoder: Encoder, value: Holder) {
        encoder.encodeSerializableValue(valueSerializer, value.value)
    }

    override fun deserialize(decoder: Decoder): Holder =
        Holder(decoder.decodeSerializableValue(valueSerializer))
}