A minimalistic Future and Promises framework for Swift with strong type inference and no boilerplate.
Promis is a Swift framework that implements the Futures and Promises pattern for managing asynchronous operations. It provides a clean, type-safe way to chain async tasks, handle errors, and support cancellation without introducing unnecessary complexity or boilerplate code.
iOS and macOS developers working with Swift who need a lightweight, straightforward solution for handling asynchronous programming patterns like network requests, data parsing, and other async workflows.
Developers choose Promis for its minimalistic design, strong type inference via generics, and focus on readability without the overhead of more weighty alternatives. It offers essential features like chaining and cancellation while keeping the codebase simple and maintainable.
The easiest Future and Promises framework in Swift. No magic. No boilerplate.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Swift generics for robust type inference, reducing runtime errors and ensuring code reliability, as highlighted in the key features.
Enables sequential async operations with methods like thenWithResult, eliminating callback pyramids and improving code readability, as demonstrated in the usage examples.
Provides clear cancellation support through the FutureState enum, allowing tasks to be aborted cleanly, a feature emphasized in the key features.
Ensures safe concurrent access across multiple threads, making it suitable for multi-threaded environments, as stated in the README's brag points.
Lacks built-in features for retry logic, timeouts, or advanced scheduling, focusing only on core Futures/Promises functionality, which may require additional custom code.
In complex closures, Swift cannot infer types automatically, forcing explicit annotations that add boilerplate, as admitted in the pitfalls section of the README.
Has less adoption and fewer third-party resources compared to alternatives like PromiseKit, potentially limiting support and integration options.