OpenCombine alternatives and similar libraries
Based on the "Reactive Programming" category.
Alternatively, view OpenCombine alternatives based on common mentions on social networks and blogs.
-
ReactiveCocoa
Cocoa framework and Obj-C dynamism bindings for ReactiveSwift. -
Katana
Swift Apps in a Swoosh! A modern framework for creating iOS apps, inspired by Redux. -
RxCoordinator
🎌 Powerful navigation library for iOS based on the coordinator pattern -
RxAlamofire
RxSwift wrapper around the elegant HTTP networking in Swift Alamofire -
Interstellar
Simple and lightweight Functional Reactive Coding in Swift for the rest of us. :large_orange_diamond: -
RxAutomaton
🤖 RxSwift + State Machine, inspired by Redux and Elm. -
NSObject-Rx
Handy RxSwift extensions on NSObject, including rx.disposeBag. -
Verge
🟣 A robust Swift state-management framework designed for complex applications, featuring an integrated ORM for efficient data handling. -
RxMediaPicker
A reactive wrapper built around UIImagePickerController. -
VueFlux
:recycle: Unidirectional State Management Architecture for Swift - Inspired by Vuex and Flux -
ReactiveTask
Flexible, stream-based abstraction for launching processes -
TemplateKit
React-inspired framework for building component-based user interfaces in Swift. -
RxReduce
Lightweight framework that ease the implementation of a state container pattern in a Reactive Programming compliant way. -
LightweightObservable
📬 A lightweight implementation of an observable sequence that you can subscribe to. -
RxMultipeer
A testable RxSwift wrapper around MultipeerConnectivity -
Aftermath
:crystal_ball: Stateless message-driven micro-framework in Swift. -
ReactiveArray
An array class implemented in Swift that can be observed using ReactiveCocoa's Signals -
SimpleApiClient
A configurable api client based on Alamofire4 and RxSwift4 for iOS. -
OneWay
A Swift library for state management with unidirectional data flow. -
ACKReactiveExtensions
Set of useful extensions for ReactiveSwift & ReactiveCocoa -
ReactiveLocation
ReactiveCocoa wrapper for CLLocationManager. -
STDevRxExt
STDevRxExt contains some extension functions for RxSwift and RxCocoa which makes our live easy. -
BindKit
Two-way data binding framework for iOS. Only one API to learn. -
RxOptional
RxSwift extentions for Swift optionals and "Occupiable" types -
RxAlamoRecord
RxAlamoRecord combines the power of the AlamoRecord and RxSwift libraries to create a networking layer that makes interacting with API's easier than ever reactively.
Appwrite - The open-source backend cloud platform
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of OpenCombine or a related project?
README
OpenCombine
Open-source implementation of Apple's Combine framework for processing values over time.
The main goal of this project is to provide a compatible, reliable and efficient implementation which can be used on Apple's operating systems before macOS 10.15 and iOS 13, as well as Linux, Windows and WebAssembly.
CI Status |
---|
Installation
OpenCombine
contains three public targets: OpenCombine
, OpenCombineFoundation
and OpenCombineDispatch
(the fourth one, COpenCombineHelpers
, is considered private. Don't import it in your projects).
OpenCombine itself does not have any dependencies. Not even Foundation or Dispatch. If you want to use OpenCombine with Dispatch (for example for using DispatchQueue
as Scheduler
for operators like debounce
, receive(on:)
etc.), you will need to import both OpenCombine
and OpenCombineDispatch
. The same applies to Foundation: if you want to use, for instance, NotificationCenter
or URLSession
publishers, you'll need to also import OpenCombineFoundation
.
If you develop code for multiple platforms, you may find it more convenient to import the
OpenCombineShim
module instead. It conditionally re-exports Combine on Apple platforms (if
available), and all OpenCombine modules on other platforms. You can import OpenCombineShim
only
when using SwiftPM. It is not currently available for CocoaPods.
Swift Package Manager
Swift Package
To add OpenCombine
to your SwiftPM package, add the OpenCombine
package to the list of package and target dependencies in your Package.swift
file. OpenCombineDispatch
and OpenCombineFoundation
products are currently not supported on WebAssembly. If your project targets WebAssembly exclusively, you should omit them from the list of your dependencies. If it targets multiple platforms including WebAssembly, depend on them only on non-WebAssembly platforms with conditional target dependencies.
dependencies: [
.package(url: "https://github.com/OpenCombine/OpenCombine.git", from: "0.13.0")
],
targets: [
.target(
name: "MyAwesomePackage",
dependencies: [
"OpenCombine",
.product(name: "OpenCombineFoundation", package: "OpenCombine"),
.product(name: "OpenCombineDispatch", package: "OpenCombine")
]
),
]
Xcode
OpenCombine
can also be added as a SwiftPM dependency directly in your Xcode project (requires Xcode 11 upwards).
To do so, open Xcode, use File → Swift Packages → Add Package Dependency…, enter the repository URL, choose the latest available version, and activate the checkboxes:
CocoaPods
To add OpenCombine
to a project using CocoaPods, add OpenCombine
and OpenCombineDispatch
to the list of target dependencies in your Podfile
.
pod 'OpenCombine', '~> 0.13.0'
pod 'OpenCombineDispatch', '~> 0.13.0'
pod 'OpenCombineFoundation', '~> 0.13.0'
Debugger Support
The file opencombine_lldb.py
defines some lldb
type summaries for easier debugging. These type summaries improve the way lldb
and Xcode display some OpenCombine values.
To use opencombine_lldb.py
, figure out its full path. Let's say the full path is ~/projects/OpenCombine/opencombine_lldb.py
. Then the following statement to your ~/.lldbinit
file:
command script import ~/projects/OpenCombine/opencombine_lldb.py
Currently, opencombine_lldb.py
defines type summaries for these types:
Subscribers.Demand
- That's all for now.
Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md).