finds.dev← search

// the find

mxcl/PromiseKit

★ 14,235 · Swift · MIT · updated Jun 2026

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →