Daniel Bauke
Open Source / AwaitlessKit

AwaitlessKit

See it on GitHub
Animated demo: @Awaitless on an async function expands into a sync wrapper that is called without await.

Generate legacy sync interfaces for your async/await code, and migrate to Swift 6 Structured Concurrency with both APIs available.

Why it exists

Swift’s async/await adoption is all-or-nothing, and you can’t easily call async functions from sync contexts. AwaitlessKit makes the migration incremental. It bypasses Swift’s concurrency safety mechanisms, so it is a migration tool and not a permanent solution.

What it does

@Awaitless family
async to sync, Combine publisher or completion handler.
@Awaitable family
Publisher and completion-handler APIs to async/await.
PromiseKit integration
Conversion in both directions, as a separate product.
@IsolatedSafe
Thread-safe wrappers for nonisolated(unsafe) properties.

Use it

class DataService {
    @Awaitless
    func fetchUser(id: String) async throws -> User {
        // Your async implementation
    }
}