A thoughtful and complete promise implementation for Swift and Objective-C, simplifying asynchronous programming.
PromiseKit is a promise library for Swift and Objective-C that simplifies asynchronous programming by providing a clean, chainable API for managing async operations. It solves the problem of callback hell and complex error handling in async code, making it easier to write and maintain asynchronous logic. The library includes extensions for many Apple frameworks, allowing seamless integration with existing APIs.
iOS, macOS, tvOS, and watchOS developers working with Swift or Objective-C who need to manage asynchronous operations like networking, location services, or other async tasks. It's also suitable for cross-platform developers targeting Linux or Android with Swift.
Developers choose PromiseKit for its excellent Objective-C bridging, comprehensive platform support, and extensive library of Apple API extensions. Its thoughtful design results in clearer, more readable code compared to traditional callback-based approaches, and it's widely used in top apps worldwide.
Promises for Swift & ObjC.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Seamlessly integrates with Objective-C codebases, allowing mixed-language projects to adopt modern async patterns without rewriting. The README highlights this as a key feature for top apps.
Works across iOS, macOS, tvOS, watchOS, Linux, and Android, making it versatile for cross-platform Swift development. The badge shows support for all major Apple and beyond platforms.
Converts nearly all Apple async APIs to promises via optional subspecs, such as MapKit and CoreLocation. This reduces boilerplate when integrating with native frameworks.
Provides chainable methods like .catch and .ensure for centralized error management and cleanup. The example code demonstrates how this simplifies async chains compared to callbacks.
Extensions for Apple APIs are in separate repositories, requiring additional Podspecs or setup, which can complicate dependency management compared to all-in-one libraries.
With native async/await in Swift 5.5, PromiseKit may feel unnecessary for new projects, as the README itself points developers to Async+ for modern concurrency patterns.
PromiseKit 8 dropped some Podspecs, indicating potential migration hurdles between major versions. This can disrupt long-term maintenance in large codebases.