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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions