Lists & Navigation

June 02, 2026 1 min read

List shows scrollable rows; NavigationStack handles pushing detail screens.

A dynamic list with navigation

struct UsersView: View {
    let users: [User]
    var body: some View {
        NavigationStack {
            List(users) { user in
                NavigationLink(user.name) {
                    UserDetail(user: user)
                }
            }
            .navigationTitle("Users")
        }
    }
}

Your model must conform to Identifiable (have an id) for List to track rows.

Tip: Add .searchable() and .refreshable() modifiers for instant search and pull-to-refresh.

Summary

List renders dynamic, identifiable data; NavigationStack + NavigationLink push detail screens with a built-in back button.