Reactive Programming in Swift
24.6k
Stars
4.2k
Forks
22
Open issues
30
Contributors
AI Analysis
RxSwift is the Swift implementation of Reactive Extensions, providing an Observable-based abstraction for composing asynchronous operations and data streams across iOS, macOS, tvOS, watchOS, and Linux. It unifies KVO observation, async operations, and UI events under a unified sequence abstraction, serving primarily iOS/macOS developers who adopt functional reactive programming patterns. It is not a general-purpose library—it targets developers committed to the reactive paradigm.
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
RxSwift brings ReactiveX Observable patterns to Swift across Apple platforms and Linux
RxSwift is a Swift implementation of the ReactiveX standard, enabling composition of asynchronous event streams via Observable sequences. It targets iOS, macOS, tvOS, watchOS, and Linux developers who need a unified abstraction over KVO, UI events, network calls, and other async data sources. The library ships with RxCocoa for UIKit/AppKit bindings, RxRelay for subject wrappers, and RxTest/RxBlocking for testability. It has been widely adopted in production iOS apps over the past decade, particularly in teams that value cross-platform Rx knowledge transferable from RxJava or RxJS.
Created in April 2015 as iOS development moved toward reactive patterns, RxSwift predates Apple's own Combine framework (2019) by four years and established the dominant reactive vocabulary in the Swift ecosystem for that period.
RxSwift grew rapidly from 2015–2020 as UIKit-based iOS teams adopted reactive architecture patterns (MVVM, VIPER). Growth plateaued after Apple shipped Combine in 2019 and accelerated its own async/await story in Swift 5.5 (2021). Star accumulation has effectively stopped (0 new stars in the last 7 days), reflecting a mature, stable library rather than an emerging one. Existing codebases continue to use it, but new greenfield projects increasingly choose Combine or Swift Concurrency.
RxSwift has 24,646 stars and 4,161 forks accumulated over 11 years, with widespread documentation of its use in iOS production apps across the industry. It appears in numerous public architecture guides, conference talks, and open-source iOS projects. Adoption at scale in UIKit-based apps is well-documented historically; current new-project adoption rate is likely declining but existing production deployments are substantial.
Appears to follow a modular layered design: RxSwift core has no external dependencies; RxCocoa and RxRelay depend on the core; RxTest and RxBlocking are test-only modules. This separation likely enables consumers to adopt only the layers they need. The Observable<Element> abstraction appears consistent with the ReactiveX specification, suggesting cross-language operator parity is a design goal.
RxTest and RxBlocking are dedicated testing modules included in the repository, and the README explicitly documents unit testing practices. A CI badge for a test workflow is present. Coverage percentage is not documented in README.
Last push was April 8, 2026, approximately 2.5 months before the evaluation date. This indicates active maintenance. The repository has had continuous CI, documented contribution guidelines, and a Slack community. Maintenance appears steady rather than high-velocity — consistent with a mature library in stabilization mode rather than active feature development.
ADOPT IF: you are maintaining or extending an existing RxSwift codebase, your team has deep Rx expertise from other platforms (RxJava/RxJS), or you need reactive streams with Linux support and broad OS version coverage. AVOID IF: starting a new SwiftUI-first or modern UIKit project where Combine or Swift Concurrency covers your async needs without adding a dependency. MONITOR IF: you are evaluating long-term maintenance risk — watch whether Apple's ecosystem improvements (AsyncSequence maturation, SwiftUI tooling) continue to reduce the incremental value of a third-party reactive library.
Independent dimensions
Mainstream potential
3/10
Technical importance
8/10
Adoption evidence
8/10
- Ecosystem gravity is shifting: Apple's native async tooling (Combine, async/await, AsyncSequence) reduces the marginal value of RxSwift for new projects, which may lead to slower community growth and fewer third-party RxSwift extensions over time.
- New contributor acquisition is likely declining as junior iOS developers learn Swift Concurrency as their first async model rather than ReactiveX.
- Dependency on UIKit-centric patterns means RxCocoa's relevance may diminish as SwiftUI adoption grows, since SwiftUI's state management model does not map cleanly onto RxSwift bindings.
- The Rx learning curve (Subjects, hot/cold observables, scheduler management, memory management via DisposeBag) remains a meaningful onboarding cost that simpler alternatives no longer require teams to pay.
- Although last-push recency is healthy, commit velocity and PR activity are not visible from available metadata — it is possible the project is in maintenance-only mode with security and compatibility fixes rather than active development.
RxSwift will remain a stable, well-maintained library serving its large installed base for the foreseeable future, but is unlikely to regain momentum as a first-choice for new iOS projects. It will occupy a permanent niche in teams with existing Rx investment or cross-platform Rx codebases.
Explore similar
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Language
- Swift
- License
- MIT
- Last updated
- 3mo ago
- Created
- 137mo ago
- Analyzed with
- anthropic/claude-haiku-4-5
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
Classes such as BehaviorSubject are at risk of deadlock, and there are issues with how locks are used.
Xcode 27 warning: 'v4' is deprecated: watchOS 9.0 is the oldest supported version
ReplayBufferBase can create deadlocks
MergeSink can deadlock
RefCount calls connect under its lock, and this cause the deadlock
Similar repos
ReactiveCocoa/ReactiveCocoa
ReactiveCocoa provides reactive extensions to Apple's Cocoa frameworks built on...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
24.6k | — | Swift | 8/10 | 3mo ago |
|
|
48.2k | — | Java | 9/10 | 8h ago |
|
|
19.8k | — | Swift | 8/10 | 10mo ago |
|
|
20k | — | Java | 8/10 | 3w ago |
Combine is Apple's first-party reactive framework, available since iOS 13/macOS 10.15. It eliminates a dependency for projects targeting those minimum OS versions and integrates natively with SwiftUI. RxSwift has broader OS version coverage, a larger operator set, Linux support, and a larger existing community, but Combine is the default choice for new Apple-platform projects without legacy constraints.
Swift Concurrency, introduced in Swift 5.5, handles many async patterns that previously required RxSwift — especially single-value async operations. For stream-based work, AsyncSequence is the native equivalent. RxSwift's Observable model is more compositional for complex multi-stream pipelines, but async/await is now the idiomatic Swift approach for most async tasks.
ReactiveCocoa predates RxSwift and diverged from the ReactiveX standard, offering a Swift-native signal model. RxSwift is more widely adopted, benefits from cross-platform Rx documentation, and aligns with RxJava/RxJS patterns. ReactiveSwift targets a similar audience but has a smaller ecosystem and fewer recent contributors.
RxJava is the Java/Android equivalent with nearly double the stars. Teams moving between Android and iOS can share Rx mental models across both. RxSwift deliberately mirrors RxJava's operator naming and conventions to enable this knowledge transfer.
OpenCombine is a Combine-compatible open-source implementation targeting Linux and older Apple OS versions. It directly competes with RxSwift's cross-platform story. For teams that want Combine semantics on Linux or pre-iOS 13, OpenCombine may be preferable to RxSwift, though its adoption is much narrower.

