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
keyfor smooth updates and animations. - Add a single header with
item { }beforeitems().
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.