Use `async let` when multiple independent async operations can run concurrently: ```swift struct Dashboard { let profile: Profile let notifications: [Notification] } func loadDashboard() async throws -> Dashboard { async let profile = fetchProfile() async let notifications = fetchNotifications() // Await results when they are needed. return try await Dashboard( profile: profile, notifications: notifications ) } ``` The two fetches start in parallel. `async let` values are automatically awaite...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill swift-concurrency --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Swift Concurrency?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-swift-concurrency-9e04a6a2)More formats (shields.io, HTML) on the badges page.
Use `async let` when multiple independent async operations can run concurrently:
```swift
struct Dashboard {
let profile: Profile
let notifications: [Notification]
}
func loadDashboard() async throws -> Dashboard {
async let profile = fetchProfile()
async let notifications = fetchNotifications()
// Await results when they are needed.
return try await Dashboard(
profile: profile,
notifications: notifications
)
}
```
The two fetches start in parallel. `async let` values are automatically awaited before the enclosing scope exits.
Handle cancellation in long-running work:
```swift
func fetchData() async throws -> Data {
try Task.checkCancellation()
return try await networkRequest()
}
```
Use `withTaskGroup` or `withThrowingTaskGroup` when the number of tasks is dynamic:
```swift
func fetchAll(_ ids: [Int]) async throws -> [Data] {
try await withThrowingTaskGroup(of: Data.self) { group in
for id in ids {
group.addTask {
try await fetch(id: id)
}
}
var results: [Data] = []
for try await result in group {
results.append(result)
}
return results
}
}
```
Use `async let` for a fixed, small set of independent tasks; use task groups for dynamically created tasks. Avoid `Task.detached` unless you intentionally need to break task context inheritance.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!