Open-source implementation of Apple's Combine framework for reactive programming, compatible with older Apple OSes and cross-platform.
OpenCombine is an open-source implementation of Apple's Combine framework, designed for processing values over time using reactive programming patterns in Swift. It solves the problem of using Combine's declarative API on platforms where Apple's native version is unavailable, such as older iOS/macOS versions, Linux, Windows, and WebAssembly. The project provides publishers, subscribers, and operators to handle asynchronous data streams seamlessly.
Swift developers building applications that require reactive programming across multiple platforms, including those targeting environments without native Combine support (e.g., pre-iOS 13, Linux servers, or WebAssembly projects).
Developers choose OpenCombine because it offers a reliable, API-compatible alternative to Apple's Combine, enabling consistent reactive programming patterns across all supported platforms without locking into Apple's ecosystem. Its modular design and conditional shim simplify multi-platform development while maintaining performance and debugability.
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 patterns on pre-iOS 13, Linux, Windows, and WebAssembly, solving compatibility gaps where Apple's native framework is unavailable, as highlighted in the README's goal.
Separates core, Dispatch, and Foundation into distinct targets, allowing developers to import only what they need, reducing bloat and improving flexibility in project setup.
OpenCombineShim automatically uses native Combine on supported Apple platforms, simplifying multi-platform codebases by reducing conditional compilation, though it's SwiftPM-only per the README.
Includes an LLDB script (opencombine_lldb.py) that improves type summaries for OpenCombine types, making debugging reactive streams more intuitive in Xcode or LLDB.
OpenCombineDispatch and OpenCombineFoundation are not available on WebAssembly, requiring complex conditional dependencies and potentially limiting functionality for Wasm projects, as noted in the installation section.
The convenient OpenCombineShim is only accessible via SwiftPM, not CocoaPods, forcing manual handling and increased setup complexity for teams using CocoaPods exclusively.
As an open-source reimplementation, it may not keep pace with Apple's Combine updates, risking missing new operators or features, which could affect long-term compatibility.
While it mimics Combine, deep integration with Apple-specific frameworks like SwiftUI might not be seamless, leading to edge cases or workarounds in cross-platform apps.
OpenCombine is an open-source alternative to the following products: