RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
48.2k
Stars
7.6k
Forks
13
Open issues
100+
Contributors
AI Analysis
RxJava is a Java VM library for composing asynchronous and event-based programs using observable sequences, implementing Reactive Extensions for the JVM. It serves best as a foundational reactive programming framework for backend systems, middleware, and services that require declarative handling of streams, threading, and concurrent data. It benefits enterprise Java developers, platform teams, and library authors building scalable async systems; it is not a general-purpose utility library fo...
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.
RxJava 4.x modernizes reactive programming for the JVM with Virtual Thread and Java Flow API support
RxJava is a mature, widely-adopted library for composing asynchronous and event-based programs on the JVM using observable sequences and functional-style operators. Originally built to bring the ReactiveX model to Java, it targets backend engineers, Android developers (via RxAndroid), and anyone orchestrating complex async workflows. With 48K stars, a rich operator set, and deep ecosystem penetration, it remains a production staple in many large Java codebases. Version 4.x signals continued active investment, adding Virtual Thread support, java.util.concurrent.Flow integration, and Java 26 idioms.
Launched in early 2013 by Netflix to address async complexity at scale, RxJava popularized reactive programming on the JVM years before Project Reactor and Kotlin coroutines emerged as alternatives. It has gone through three major versions, each with significant architectural refinements.
Peak adoption came during the Android development boom (2015–2019) when RxJava was nearly ubiquitous in Android apps. Growth plateaued as Kotlin coroutines and Project Reactor captured new users. Stars have stabilized, reflecting a mature project with a loyal installed base rather than explosive new adoption. The 4.x branch shows the project pivoting toward modern JVM features rather than chasing market share.
RxJava has documented production use at Netflix (its origin), and was a de facto standard in Android development for several years. Maven Central presence and over 7,500 forks suggest widespread real-world usage. Direct verification of current production scale is not available from metadata alone, but historical and ecosystem signals strongly imply significant ongoing deployment in enterprise Java and legacy Android codebases.
Appears to be structured around a set of base reactive types (Flowable, Observable, Single, Maybe, Completable), each with rich operator chains. Version 4.x likely reimplements internals on top of java.util.concurrent.Flow (JDK 9+), removing the need for the older Reactive Streams bridge. Virtual Thread integration suggests scheduler-level rework. JPMS and OSGi support indicates modular-boundary discipline.
Codecov badge is present and linked to the 4.x branch, indicating coverage tracking is active. Reactive Streams TCK usage is mentioned explicitly, suggesting protocol conformance testing is part of the suite. Exact coverage percentage is not stated in the README excerpt.
Last push was 2026-06-19, two days before the evaluation date — unambiguously active. The README describes ongoing 4.x work with in-progress items marked, indicating regular authoring activity. RxJava 3.x is explicitly entering a maintenance-only phase with a defined sunset, showing structured lifecycle management.
ADOPT IF: you are maintaining an existing RxJava 2/3 codebase, working on a Java-first project where Kotlin coroutines are not viable, or need the broadest possible operator vocabulary for complex async orchestration. AVOID IF: you are starting a new Spring Boot service (prefer Reactor) or a new Kotlin project (prefer coroutines/Flow), or need deep Android support below API levels that support desugaring for 4.x features. MONITOR IF: you are evaluating long-term maintenance trajectory for legacy RxJava 2/3 code, since 3.x support is being formally wound down within roughly 12 months of 4.x stable release.
Independent dimensions
Mainstream potential
4/10
Technical importance
8/10
Adoption evidence
8/10
- RxJava 4.x targets Java 26+, which may exclude teams locked to LTS versions (Java 21 or 17), limiting near-term adoption of the new version.
- Android compatibility for 4.x is explicitly uncertain in the README, potentially fragmenting the historically significant Android user base away from the new version.
- The dominant mindshare for new JVM async projects has shifted to Kotlin coroutines and Project Reactor; RxJava may increasingly serve maintenance rather than greenfield use cases.
- The project appears to be primarily maintained by a very small number of active contributors (inferred from repository structure), creating bus-factor risk for a widely-deployed library.
- The transition from 3.x to 4.x involves package namespace changes and JVM requirements that create non-trivial migration friction for existing users.
RxJava 4.x will stabilize as a technically capable but narrowing-audience library — valued for legacy migrations, Java-only shops, and specialized async orchestration — while new project adoption continues shifting toward Kotlin coroutines and Reactor.
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Website
- https://dsc.gg/rxjava
- Language
- Java
- License
- Apache-2.0
- Last updated
- 8h ago
- Created
- 164mo 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
4.x: Java target version clarification
4.x: Separate `TestHelper.race` uses so they can run `@Isolated`
:information_source: Official Discord Server :information_source: https://dsc.gg/rxjava
Cache/Replay operators to be more GC friendly
Feature Request: Add `Observable.usingWhen()` for resources generated by a `Publisher`
Open pull requests
No open pull requests.
Top contributors
Similar repos
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
48.2k | +8 | Java | 9/10 | 8h ago |
|
|
20k | — | Java | 8/10 | 3w ago |
|
|
24.6k | — | Swift | 8/10 | 3mo ago |
|
|
1.7k | — | PHP | 7/10 | 3mo ago |
|
|
7.2k | — | C# | 8/10 | 2w ago |
|
|
8.5k | — | C# | 8/10 | 11h ago |
The default reactive library for Spring WebFlux. Better integrated into the Spring ecosystem and favored for new greenfield backend services. RxJava offers a broader operator vocabulary and cross-platform (Android) support but lacks Spring's out-of-the-box wiring.
The idiomatic choice for new Kotlin projects. Coroutines provide simpler mental model via sequential-looking async code; Kotlin Flow is less operator-rich than RxJava but benefits from language-level support. RxJava remains relevant for Java-first teams and projects not on Kotlin.
Used in Quarkus ecosystem. Simpler API surface, less operator depth than RxJava. RxJava has a far larger operator library and longer track record.
Sister libraries that share ReactiveX semantics. These extend RxJava's influence to iOS and Android-specific layers, reinforcing the ecosystem rather than competing with it.
Not a reactive library but reduces the motivation for reactive-style code in latency-bound scenarios. RxJava 4.x explicitly integrates Virtual Thread support, attempting to coexist rather than be replaced.