Kotlin

Compose LaunchedEffect — Side Effects

admin by @admin ADMIN
4d ago
Jun 1, 2026
Public
0 0 up · 0 down Sign in to vote
`LaunchedEffect(key)` runs a coroutine when the key changes. Use for one-shot init, snapshot listening, data loading, or any suspend work tied to a composition.
Kotlin
Raw
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import kotlinx.coroutines.delay

@Composable
fun UserScreen(userId: Int, repository: UserRepository) {
    var user by remember { mutableStateOf<User?>(null) }
    var error by remember { mutableStateOf<String?>(null) }

    // Re-runs whenever `userId` changes
    LaunchedEffect(userId) {
        try {
            user = repository.fetchUser(userId)
        } catch (e: Exception) {
            error = e.message
        }
    }

    when {
        error != null -> Text("Error: $error")
        user  == null -> CircularProgressIndicator()
        else          -> Text("Hello ${user!!.name}")
    }
}

interface UserRepository { suspend fun fetchUser(id: Int): User }
data class User(val name: String)
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.