Skip to content

Play Store rating collapse (4.2→3.1) is driven by the ChromeWatcher.kt:76 NPE — data #185

Description

@ErikBjare

The Play Store rating is collapsing, and the data points at one specific crash

We now auto-collect Android vitals + rating history in ActivityWatch/stats (see ActivityWatch/stats#17). Pulling it together makes the picture clear.

Rating is in free-fall (data/android-ratings.csv)

Date Store rating
2019 5.00
2022–2024 ~4.4–4.5
Jan 2026 4.21
Jun 2026 3.15

A ~1-point drop in ~6 months.

Crash rate spiked over the same window (data/android-crash-rate.csv)

User-perceived crash rate ~8–9% (over Google's ~8% bad-behavior threshold); raw crash rate ~15–27%/day. User-perceived ANR is ~0% — this is a crash problem, not ANR.

One crash dominates (vitals.py errors)

Reports Exception Location
791 NullPointerException ChromeWatcher.onAccessibilityEvent (ChromeWatcher.kt:76)
26 NotImplementedError ChromeWatcher.onInterrupt
~22 SIGABRT libaw_server.so (Rust OOM)

The #1 cluster (791) dwarfs everything else combined. Stacktrace:

Exception java.lang.NullPointerException:
  at net.activitywatch.android.watcher.ChromeWatcher.onAccessibilityEvent (ChromeWatcher.kt:76)
  at android.accessibilityservice.AccessibilityService$2.onAccessibilityEvent (AccessibilityService.java:2744)
  ...

Conclusion

The rating collapse tracks the crash spike, and the crash spike is essentially one NPE at ChromeWatcher.kt:76. So the highest-leverage lever for both crash rate and rating recovery is:

  1. Null-guard ChromeWatcher.kt:76 (onAccessibilityEvent).
  2. Cut a fresh release from master (~124 commits ahead of the 2023 Play build; already carries merged ANR fixes).

That one fix + a release should take the crash rate from ~9% toward the Rust-OOM floor and start the rating recovering.

Reproduce the data yourself

In ActivityWatch/stats (key already on your machine):

uv run vitals.py errors --limit 10 --stacktraces
uv run vitals.py summary
# rating history: data/android-ratings.csv

Related: #176 (crash/ANR tracking — this issue is the rating-impact analysis). cc @TimeToBuildBob

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions