// the find
mxcl/PromiseKit
Promises for Swift & ObjC.
PromiseKit is a mature Swift/ObjC promise library that predates Swift's native async/await. It wraps most of Apple's callback-heavy APIs in a chainable `.then`/`.done`/`.catch` pattern, making pre-concurrency async code significantly more readable. It's most relevant to teams maintaining older codebases that haven't migrated to structured concurrency.
The ObjC bridging is genuinely well done — `AnyPromise` lets you use promises across Swift/ObjC boundaries without awkward glue code. The extension ecosystem wraps nearly every Apple framework (CoreLocation, MapKit, CloudKit, etc.), so you're not writing adapters yourself. The A+ spec compliance tests and JS-A+ compatibility suite are thorough for a Swift library. The `Guarantee` type, which can never reject, is a useful API distinction that most promise libraries skip.
This is essentially a dead-end investment for new projects — Swift 5.5 async/await obsoletes the core value proposition, and the README itself links you away to Async+ for the migration path. The extension modules are scattered across separate repos under the PromiseKit org, which means separate version pinning, separate issues, and varying maintenance quality. There's no cancellation story built into the core — cancellation requires opting into a whole parallel API surface. If you're starting a new iOS/macOS project today, adopting this means eventually paying a migration cost that Swift Concurrency avoids entirely.