Compose SwiftUIv0.4.0
esc
GuideAPIGitHub
View

Button

A control that runs an action when the user taps or clicks it.

iOS 17.0+macOS 14.0+tvOS 17.0+watchOS 10.0+
fun Button(title: String, modifier: Modifier = Modifier, action: () -> Unit)

Overview

Give a button a title, a title and an SF Symbol, or any composable content as its label. The action is a plain Kotlin lambda, so it can call your ViewModel directly.

Button("Increment", action = vm::increment)

Button(action = { vm.delete(item) }) {
    Label("Delete", systemImage = SFSymbol.trash)
}

This is the Kotlin form of SwiftUI Button.init(_:action:): SwiftUI documentation. In Swift it reads:

@preconcurrency nonisolated init<S>(_ title: S, action: @escaping @MainActor () -> Void) where S : StringProtocol

Topics

Creating a Button

fun Button(role: ButtonRole?, modifier: Modifier = Modifier, action: () -> Unit, content: @Composable () -> Unit)
SwiftUI Button.init(role:action:label:)
fun Button(modifier: Modifier = Modifier, action: () -> Unit, content: @Composable () -> Unit)
SwiftUI Button.init(action:label:)
fun Button(role: ButtonRole, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(role:action:) · iOS 26.0+, macOS 26.0+, tvOS 26.0+, watchOS 26.0+
fun Button(title: String, role: ButtonRole?, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:role:action:)
fun Button(title: String, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:action:)
fun Button(title: String, systemImage: SFSymbol, role: ButtonRole?, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:systemImage:role:action:)
fun Button(title: String, systemImage: SFSymbol, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:systemImage:action:)
fun Button(titleResource: LocalizedKey, role: ButtonRole?, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:role:action:)
fun Button(titleResource: LocalizedKey, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:action:)
fun Button(titleResource: LocalizedKey, systemImage: SFSymbol, role: ButtonRole?, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:systemImage:role:action:)
fun Button(titleResource: LocalizedKey, systemImage: SFSymbol, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:systemImage:action:)
fun Button(titleKey: LocalizedKey? = null, role: ButtonRole? = null, systemImage: SFSymbol? = null, modifier: Modifier = Modifier, action: (() -> Unit)? = null)
SwiftUI Button · (e.g. Image(systemName = SFSymbol.star)).

Methods

fun ButtonRole(titleKey: LocalizedKey, role: ButtonRole?, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:role:action:)
fun ButtonAction(titleKey: LocalizedKey, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:action:)
fun ButtonSystemImage(titleKey: LocalizedKey, systemImage: SFSymbol, role: ButtonRole?, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:systemImage:role:action:)
fun ButtonSystemImage(titleKey: LocalizedKey, systemImage: SFSymbol, modifier: Modifier = Modifier, action: () -> Unit)
SwiftUI Button.init(_:systemImage:action:)