Open-source implementation of Apple's Combine framework for processing values over time across multiple platforms.
OpenCombine is an open-source implementation of Apple's Combine framework, providing a declarative Swift API for processing values over time. It enables reactive programming patterns like publishers and subscribers to handle asynchronous events and data streams elegantly. The project aims to be a reliable and efficient drop-in replacement for Apple's native Combine, extending its availability to older Apple OS versions and non-Apple platforms.
Swift developers building cross-platform applications or maintaining projects on Apple operating systems before macOS 10.15 and iOS 13, as well as those targeting Linux, Windows, or WebAssembly. It is also suitable for developers seeking a Combine-compatible reactive programming solution outside of Apple's ecosystem.
Developers choose OpenCombine for its cross-platform compatibility and modular design, allowing use as a drop-in replacement for Apple's Combine where it's unavailable. Its conditional shim automatically uses native Combine when available, ensuring optimal performance and seamless integration across different environments.
Open source implementation of Apple's Combine framework for processing values over time.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables Combine-style reactive programming on Linux, Windows, WebAssembly, and older Apple OS versions, as explicitly stated in the README's goal to extend availability beyond Apple's ecosystem.
Separates core functionality, Dispatch integration, and Foundation integration into distinct modules, allowing developers to include only what they need and reduce dependency bloat.
The conditional shim (OpenCombineShim) automatically uses Apple's native Combine when available, ensuring optimal performance and a smooth transition across different platforms.
Provides an LLDB script (opencombine_lldb.py) that improves type summaries for OpenCombine values, making debugging easier in Xcode and lldb.
OpenCombineDispatch and OpenCombineFoundation modules are not supported on WebAssembly, restricting access to schedulers and Foundation-based publishers on that platform.
Requires importing multiple modules (e.g., OpenCombine, OpenCombineDispatch, OpenCombineFoundation) for full features, adding configuration overhead compared to native Combine's single import.
The convenient OpenCombineShim is only available with Swift Package Manager, not CocoaPods, which may force CocoaPods users to manage platform-specific imports manually.
Unidirectional Data Flow in Swift - Inspired by Redux