Skip to content
CAI
Software that uses CAICheck a score

ReactiveX/RxAndroid

61.4

Adequate · 24 September 2026

441

lines of production code

Java

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the RxAndroid library, which provides utilities for integrating RxJava 3 with the Android platform. It enables developers to schedule asynchronous tasks on the main thread or background threads while managing disposables to prevent memory leaks. The codebase includes core scheduling components, plugin hooks for customization, and a sample application demonstrating these patterns.

Features

Added RxJava 3 Android sample activity

The sample application now includes a new MainActivity demonstrating RxJava 3 usage on Android. This activity showcases scheduling patterns by running a deferred observable on a background thread (Schedulers.io) and observing results on the main thread (AndroidSchedulers.mainThread), while properly managing disposables to prevent memory leaks.

sample-app/src/main/java · high confidence

Initial repository structure and documentation for RxAndroid 3.0.2

This change establishes the foundational project files for RxAndroid 3.0.2, including the Apache 2.0 license, contribution guidelines, and release process documentation. It introduces standard development configuration files such as \.editorconfig\ for consistent code formatting, \.gitattributes\ for line-ending normalization, and \.gitignore\ for build artifacts. The entry also adds the \README.md\ which documents the library's integration with RxJava 3, providing usage examples for main-thread and arbitrary looper scheduling, along with Gradle dependency instructions for version 3.0.2 and RxJava 3.1.5. Additionally, a \CHANGES.md\ file is created to record release notes, highlighting a fix for \AndroidSchedulers.mainThread()\ to correctly check for async message support on current Android versions and an update to RxJava 3.1.5.

(repo-wide) · high confidence

Behavioural changes

Upgrade to RxJava 3 and introduce async messaging by default

The RxAndroid library has been migrated to the RxJava 3 API, updating the package structure to \io.reactivex.rxjava3.android\ and introducing new core components such as \MainThreadDisposable\, \RxAndroidPlugins\, and \AndroidSchedulers\. A key behavioral change is that schedulers now post asynchronous messages to the Android looper by default (on API 16+), which helps avoid VSYNC locking issues. The update also includes a plugin system for customizing main thread scheduler initialization and ensures that disposal actions are executed on the main thread.

rxandroid/src/main/java · high confidence

Test coverage

Added unit tests for RxAndroid core components

Added comprehensive test coverage for the RxAndroid library, including new tests for MainThreadDisposable behavior (thread verification, synchronous/asynchronous disposal, and idempotency), RxAndroidPlugins (scheduler handler overrides and reset logic), AndroidSchedulers (hook integration, null-argument validation, and asynchronous message defaults), and HandlerScheduler (direct scheduling, delays, disposal, and hook usage). Also added test utility classes CountingRunnable and EmptyScheduler to support these tests.

rxandroid/src/test · high confidence

Dependencies

Migrate to AndroidX and upgrade build tooling

The project has been migrated to use AndroidX libraries (android.useAndroidX=true) and upgraded to the Android Gradle Plugin 4.2.2. This change updates the build configuration to target SDK 31, sets the minimum SDK to 9, and upgrades the core RxJava dependency to version 3.1.5. Additionally, the build system now uses the com.vanniktech.maven.publish plugin for publishing and configures test logging for CI environments.

(dependencies) · high confidence

Updated Gradle wrapper to version 6.9.1

The project's Gradle wrapper has been updated to use Gradle 6.9.1, ensuring that builds are executed with this specific version of the build toolchain rather than relying on a globally installed or previously cached version.

gradle · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 53 → 61 (+8.6)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 99 (-0.9)
  • Architecture 69 → 100 (+31.0)
  • Maturity 49 → 49 (+0.0)
  • Readiness 57 → 64 (+7.3)
  • Security 47 → 65 (+18.6)

Resolved (15)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Test reliability not included
  • The README does not mention bugs and how to give feedback. (README.md)
  • dormant codebase — no living knowledge left to concentrate

New (27)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no usage examples (README.md)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No assertions: defaultMainThreadSchedulerIsInitializedLazily (rxandroid/src/test/java/io/reactivex/rxjava3/android/plugins/RxAndroidPluginsTest.java)
  • No assertions: verifyDoesNotThrowOnMainThread (rxandroid/src/test/java/io/reactivex/rxjava3/android/MainThreadDisposableTest.java)
  • Skipped (documented): directSchedulePeriodicallyDisposedDoesNotRun (rxandroid/src/test/java/io/reactivex/rxjava3/android/schedulers/HandlerSchedulerTest.java)
  • Skipped (documented): directSchedulePeriodicallyDisposedDuringRunDoesNotReschedule (rxandroid/src/test/java/io/reactivex/rxjava3/android/schedulers/HandlerSchedulerTest.java)
  • Skipped (documented): directSchedulePeriodicallyInputValidation (rxandroid/src/test/java/io/reactivex/rxjava3/android/schedulers/HandlerSchedulerTest.java)
  • Skipped (documented): directSchedulePeriodicallyReschedulesItself (rxandroid/src/test/java/io/reactivex/rxjava3/android/schedulers/HandlerSchedulerTest.java)
  • Skipped (documented): directSchedulePeriodicallyThrowingDoesNotReschedule (rxandroid/src/test/java/io/reactivex/rxjava3/android/schedulers/HandlerSchedulerTest.java)
  • Skipped (documented): directSchedulePeriodicallyUsesHookOnce (rxandroid/src/test/java/io/reactivex/rxjava3/android/schedulers/HandlerSchedulerTest.java)
  • Skipped (documented): workerSchedulePeriodicallyDisposedDoesNotRun (rxandroid/src/test/java/io/reactivex/rxjava3/android/schedulers/HandlerSchedulerTest.java)
  • …and 7 more

Changes since last survey

  • 1 commits — 1 feature/other, 0 fixes

By area

  • .github/workflows — 1 commit

Notable commits

  • change: Bump actions/setup-java from 5 to 6 (#635)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ReactiveX/RxAndroid was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 20139bfd6f3db1d3e2642738ff953d8fb13637f2 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-ae95d6cad036.