Overview Prefer ButtonKit AsyncButton over custom Button { Task { ... } } or manual do/catch wrappers to get standardized loading, progress, and error feedback for async or throwing actions.
External triggers When another UI event should trigger the same action (e.g., keyboard submit), assign an id to AsyncButton and use @Environment(\.triggerButton) to trigger it.
Progress If the action can report progress, use AsyncButton(progress: ...) and update the provided progress object. For supported progress types, styles, and demo patterns, read skills/swiftui-async-button/references/asyncbutton.md.
Используйте AsyncButton из ButtonKit для действий кнопок SwiftUI, которые запускают задачу, вызывают async/await, используют do/catch или требуют встроенной обратной связи о загрузке/прогрессе/ошибке. Запускается при замене пользовательских оболочек Button+Task или когда действие кнопки может вызываться или является асинхронным. Источник: dean151/buttonkit.