Lists with LazyColumn

June 02, 2026 1 min read

LazyColumn (and LazyRow) render only the items currently on screen, making long lists fast — the Compose equivalent of RecyclerView, but with far less code.

@Composable
fun UserList(users: List<User>) {
    LazyColumn(
        contentPadding = PaddingValues(16.dp),
        verticalArrangement = Arrangement.spacedBy(12.dp)
    ) {
        items(users, key = { it.id }) { user ->
            ProfileCard(user.name, user.role)
        }
    }
}
  • Use the items() DSL to render a list.
  • Provide a stable key for smooth updates and animations.
  • Add a single header with item { } before items().
Tip: For grids use LazyVerticalGrid. Never put a LazyColumn inside a scrollable Column of unbounded height — it crashes.

Summary

LazyColumn/LazyRow render large lists efficiently with the items() DSL and stable keys — no adapter or ViewHolder needed.