reactivex/rxjava
RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
How rxjava is put together
RxJava is a pure-Java library implementing Reactive Extensions for the JVM: a fluent, immutable operator API for composing asynchronous event streams built on java.util.concurrent.Flow (Reactive Streams). The codebase is organized as a single Java library module (io.reactivex.rxjava4) with public API packages (core, schedulers, subjects, processors, parallel, disposables, functions, plugins, exceptions) and implementation details hidden under internal packages excluded from javadoc and OSGi export. Data flows through base types Flowable (backpressured), Observable, Single, Maybe, Completable, and the new virtual-thread-based Streamable, assembled at assembly time and executed at subscription/runtime time via Schedulers. Build is Gradle-based producing a multi-release JPMS/OSGi jar published to Maven Central.
Languages
Frameworks
Infrastructure
Major components
core (io.reactivex.rxjava4.core)
Defines the public reactive base types (Flowable, Observable, Single, Maybe, Completable, Streamable), their observers/subscribers/emitters, converters, operators, transformers, Scheduler abstraction, and Connectable/Grouped variants.
disposables
Provides the Disposable contract and implementations (CompositeDisposable, SerialDisposable, ActionDisposable, FutureDisposable, etc.) for cancellation and resource lifecycle management.
functions
Supplies the functional interface vocabulary (Function1-9, Consumer, BiConsumer, Predicate, Action, Cancellable) used by all operators.
exceptions
Defines the error protocol types such as CompositeException, UndeliverableException, MissingBackpressureException, ProtocolViolationException, and QueueOverflowException.
annotations
Metadata annotations (@Beta, @Experimental, @SchedulerSupport, @BackpressureSupport, @NonNull/@Nullable, @CheckReturnValue) documenting operator semantics for users and static analysis.
parallel / streamable areas
Parallel flow processing support plus the new Streamable type family (StreamProcessor, StreamSink, Streamer, VirtualEmitter/VirtualGenerator) built on virtual threads and CompletionStage state machines.
module & packaging (src/main/module, bnd bundle task)
JPMS module descriptor exporting the public API packages while requiring only java.management, plus the bnd Bundle task producing an OSGi multi-release jar excluding internal packages.
jmh benchmarks (src/jmh)
JMH performance benchmarks covering flatMap/concatMap/switchMap across all reactive types, blocking operators, memory, and Streamable operations.
A quiet maintenance week focused on keeping build tools and security scanners up to date.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quiet maintenance week focused on keeping build tools and security scanners up to date.
Week of 2026-08-17
New annotation validation arrived alongside documentation updates and dependency bumps.
Week of 2026-08-10
Resource-leak fixes took center stage, with cache cleanup and stream shutdown improvements.
Week of 2026-08-03
A busy week that fixed a privilege-escalation vulnerability in CI automation and shipped several correctness fixes plus heavy housekeeping.
Week of 2026-07-27
Performance work on Streamable landed together with a garbage-collection fix and contributor-guideline updates.
The last few weeks of RxJava development focused on hardening the upcoming 4.x release: fixing memory leaks and resource-cleanup bugs in caching and streaming components, plus a security fix for a privilege-escalation risk in a GitHub workflow. Alongside these fixes, the team modernized project infrastructure by upgrading Gradle, GitHub Actions, and test dependencies, improving documentation, and reorganizing flaky tests.
Week by week
2026-08-24A quiet maintenance week focused on keeping build tools and security scanners up to date.latest2 changes
Chore
Build tooling upgraded
The code-packaging tool (bnd) was bumped to 7.4.0 and Gradle to 9.7.1 to keep builds current.
Chore
Security scanner updated
GitHub's CodeQL security-scanning action was refreshed to its latest version.
2026-08-17New annotation validation arrived alongside documentation updates and dependency bumps.4 changes
Feature
Scheduler annotation validator
A new validator checks that annotations describing which schedulers operators use are correct, catching mistakes early.
Fix
Fixed take() scheduler annotation
Corrected an incorrect scheduler label on the take operator so it matches actual behavior.
Docs
Getting Started docs refreshed
Updated the 4.x Getting Started guide to reflect the latest state of the library.
Chore
Dependency updates
Guava was upgraded to 33.7.1-jre and the CodeQL action refreshed.
2026-08-10Resource-leak fixes took center stage, with cache cleanup and stream shutdown improvements.4 changes
Fix
cache() no longer holds onto consumers
Fixed a race where cancelling a subscription could leave cached data holding references longer than needed, wasting memory.
Fix
timer cleans up after itself
Streamable.timer now shuts down its executor/scheduler when finished instead of leaving resources running.
Docs
Security policy clarified
Added reporting guidelines so people know how to responsibly report vulnerabilities.
Chore
Test and build dependencies bumped
JUnit Jupiter moved to 6.1.3 and the Gradle wrapper to 9.7.0.
2026-08-03A busy week that fixed a privilege-escalation vulnerability in CI automation and shipped several correctness fixes plus heavy housekeeping.6 changes
Fix
Security vulnerability patched in CI
Closed a hole in the 'entropy scan' workflow that could have let untrusted pull-request code run with elevated permissions or spam comments.
Fix
fromStream now closes streams
Streamable.fromStream previously left opened Streams unclosed; it now properly releases them.
Fix
Flaky test stabilized
Made DispatchStreamProcessorTest.raceToStream less prone to random failures.
Refactor
Race-condition tests isolated
Moved more TestHelper.race tests into @Isolated classes (batch 2) so they don't interfere with each other.
Chore
CI actions pinned and upgraded
All unpinned GitHub Actions were pinned to exact versions, and upload-artifact, download-artifact, cache, github-script, and setup-java were all bumped.
Docs
Templates and README overhauled
README updated for recent changes/removals, issue templates migrated to the newer GitHub format, and the pull request template revised for clarity.
2026-07-27Performance work on Streamable landed together with a garbage-collection fix and contributor-guideline updates.5 changes
Refactor
Streamable optimizations
A round of performance improvements made the new Streamable API faster and leaner.
Fix
FlowableCache GC issue fixed
Resolved a problem where FlowableCache could prevent objects from being garbage-collected when they should be.
Chore
More race tests isolated
Flowable flatMap/mergeWith race tests were moved into @Isolated classes to reduce cross-test interference.
Chore
JDK 28 support added
The Gradle build workflow now supports testing on JDK 28, and the secret-scanning action was bumped.
Docs
Contributing guidelines revised
CONTRIBUTING.md was updated with clearer branch-targeting rules and guidelines around AI-assisted contributions.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required