Skillshub swift-concurrency
Standards for async/await, Actors, Task Groups, and MainActor. Use when implementing Swift async/await, Actors, or structured concurrency in iOS/macOS. (triggers: **/*.swift, async, await, actor, Task, MainActor)
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/swift-concurrency" ~/.claude/skills/comeonoliver-skillshub-swift-concurrency-6439c9 && rm -rf "$T"
manifest:
skills/HoangNguyen0403/agent-skills-standard/swift-concurrency/SKILL.mdsource content
Swift Concurrency
Priority: P0
Implementation Guidelines
async/await (Structured Concurrency)
- Async Functions: Mark with
and call withasync
.await
: Useasync let
for parallel execution when multiple tasks are independent.async let- Task Groups: Use
orwithTaskGroup
for spawning a dynamic number of tasks.withThrowingTaskGroup - Error Handling: Combine with
. Always handlethrows
.CancellationError
Actors (Thread Safety)
- Data Isolation: Use
for shared mutable state to avoid data races.actor
: Annotate UI classes (Views, ViewModels) with@MainActor
for main thread execution. Use@MainActor
for inline UI updates in async blocks.MainActor.run { ... }- Global Actors: Use
for specific thread-bound resources.@GlobalActor - nonisolated: Use
for methods that don't access actor state to avoid unnecessary hops.nonisolated
Task Management
- Task Hierarchy: Inherit isolation by using
.Task { ... } - Cancellation: Explicitly check
in long loops. UseTask.isCancelled
for throwing functions.try Task.checkCancellation() - Detached Tasks: Avoid
unless you explicitly want to break context inheritance.Task.detached
Anti-Patterns
- No synchronous work in @MainActor: Do not block the main thread.
- No UI updates off @MainActor: Always dispatch back to main via
.MainActor - No ignored cancellation: Always check and propagate cancellation.