A modern async/await wrapper for Apple's CoreLocation framework, replacing delegate patterns with Swift's structured concurrency.
AsyncLocationKit is a Swift library that wraps Apple's CoreLocation framework with modern async/await APIs. It solves the problem of cumbersome delegate patterns and completion blocks in location-based programming by providing type-safe, concurrent methods for requesting locations, monitoring updates, and handling authorization.
Swift developers building location-aware applications for Apple platforms (iOS, macOS, watchOS, tvOS) who want to use modern concurrency patterns instead of delegate-based CoreLocation APIs.
Developers choose AsyncLocationKit for its clean async/await interface that simplifies CoreLocation code, its type-safe event system that reduces errors, and its full support for Swift's structured concurrency model including AsyncStream for continuous monitoring.
📍async/await CoreLocation
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides async/await methods for single and continuous location requests, eliminating delegate patterns and completion blocks, as shown in the Quick Start examples with await and for-await loops.
Uses comprehensive enums like LocationUpdateEvent for all CoreLocation scenarios, reducing runtime errors and improving code clarity compared to raw delegate callbacks.
Offers a unified API across iOS, macOS, watchOS, and tvOS, with clear platform availability tables ensuring consistent development experiences.
Implements serial dispatch queues and full Sendable concurrency for Swift 6, ensuring safe concurrent access and future-proofing as highlighted in the features list.
Requires AsyncLocationManager to be initialized synchronously on the main thread, which can lead to crashes or bugs if overlooked, a constraint emphasized in the README.
Advanced features like visit monitoring and heading updates are iOS-only, while beacon ranging and significant changes exclude watchOS/tvOS, limiting cross-platform utility despite the unified API.
Needs Swift 5.5+ and Xcode 13+, which may block adoption in legacy projects or teams slow to update toolchains, as specified in the Requirements section.