Rx is a generic abstraction of computation expressed through
This is a Swift version of Rx.
It tries to port as many concepts from the original version as possible, but some concepts were adapted for more pleasant and performant integration with iOS/macOS environment.
Cross platform documentation can be found on ReactiveX.io.
Like the original Rx, its intention is to enable easy composition of asynchronous operations and event/data streams.
KVO observing, async operations and streams are all unified under abstraction of sequence. This is the reason why Rx is so simple, elegant and powerful.
I came here because I want to ...
- why use rx?
- the basics, getting started with RxSwift
- traits - what are
Variable... and why do they exist?
- tips and common errors
- the math behind Rx
- what are hot and cold observable sequences?
- Integrate RxSwift/RxCocoa with my app. Installation Guide
... hack around
- All of this is great, but it would be nice to talk with other people using RxSwift and exchange experiences.
Join Slack Channel
- Report a problem using the library. Open an Issue With Bug Template
- Request a new feature. Open an Issue With Feature Request Template
... find compatible
... see the broader vision
- Does this exist for Android? RxJava
- Xcode 8.0
- Swift 3.0
Rx doesn't contain any external dependencies.
These are currently the supported options:
Open Rx.xcworkspace, choose
RxExample and hit run. This method will build everything and run the sample app
# Podfile use_frameworks! target 'YOUR_TARGET_NAME' do pod 'RxSwift', '~> 3.0' pod 'RxCocoa', '~> 3.0' end # RxTests and RxBlocking make the most sense in the context of unit/integration tests target 'YOUR_TESTING_TARGET' do pod 'RxBlocking', '~> 3.0' pod 'RxTest', '~> 3.0' end
YOUR_TARGET_NAME and then, in the
Podfile directory, type:
$ pod install
Add this to
github "ReactiveX/RxSwift" ~> 3.0
$ carthage update
swift build --version:
import PackageDescription let package = Package( name: "RxTestProject", targets: , dependencies: [ .Package(url: "https://github.com/ReactiveX/RxSwift.git", majorVersion: 3) ] )
$ swift build
To build or test a module with RxTest dependency, set
TEST=1. (RxSwift >= 3.4.2)
$ TEST=1 swift test
Manually using git submodules
- Add RxSwift as a submodule
$ git submodule add email@example.com:ReactiveX/RxSwift.git
Rx.xcodeprojinto Project Navigator
- Go to
Project > Targets > Build Phases > Link Binary With Libraries, click
- Reactive Extensions GitHub (GitHub)
- Erik Meijer (Wikipedia)
- Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) (video)
- Reactive Programming Overview (Jafar Husain from Netflix)
- Subject/Observer is Dual to Iterator (paper)
- Rx standard sequence operators visualized (visualization tool)