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:
- Null-guard
ChromeWatcher.kt:76 (onAccessibilityEvent).
- 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
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)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)NullPointerExceptionChromeWatcher.onAccessibilityEvent(ChromeWatcher.kt:76)NotImplementedErrorChromeWatcher.onInterruptSIGABRTlibaw_server.so(Rust OOM)The #1 cluster (791) dwarfs everything else combined. Stacktrace:
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:ChromeWatcher.kt:76(onAccessibilityEvent).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):Related: #176 (crash/ANR tracking — this issue is the rating-impact analysis). cc @TimeToBuildBob