ReactiveX

ReactiveX/RxSwift

Swift MIT Mobile Single maintainer risk

Reactive Programming in Swift

24.6k stars
4.2k forks
slow
GitHub

24.6k

Stars

4.2k

Forks

22

Open issues

30

Contributors

6.10.2 02 Mar 2026

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.

Mobile Library Discovery value: 2/10
Documentation 9/10
Activity 6/10
Community 9/10
Code quality 7/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

reactive-programming swift-library async-streams observable-pattern functional-reactive
Popular Well documented MIT licensed Niche/specialized use case Production ready
Deep Analysis · Based on README and public signals
2w ago

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.

Origin

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.

Growth

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.

In production

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.

Code analysis
Architecture

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.

Tests

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.

Maintenance

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.

Honest verdict

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

Risks
  • 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.
Prediction

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.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Swift
94%
Objective-C
5.3%
Shell
0.7%
Ruby
0.1%
Makefile
0%

Information

Language
Swift
License
MIT
Last updated
3mo ago
Created
137mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

ReactiveX

ReactiveX/RxJava

RxJava is a Java VM library for composing asynchronous and event-based programs...

48.2k Java Dev Tools
ReactiveCocoa

ReactiveCocoa/ReactiveCocoa

ReactiveCocoa provides reactive extensions to Apple's Cocoa frameworks built on...

19.8k Swift Mobile
ReactiveX

ReactiveX/RxAndroid

RxAndroid provides Android-specific bindings for RxJava 3, enabling reactive...

20k Java Mobile
vs. alternatives
Apple Combine

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 (async/await)

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 / ReactiveSwift

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

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

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.