Nalya is under construction — things may move, change or break.
Nalya/Blog
About
Quality·8 min read

Android vitals explained: crash rate, ANRs, and your Play ranking

Android vitals is the closest thing Google Play has to a report card, and it's graded with consequences: apps that exceed Play's bad-behavior thresholds get reduced visibility, and in the worst case a warning label on their store listing. If you only track crashes in your own analytics, you're watching a different scoreboard than the one Google uses.

The two metrics that matter most

Vitals covers a lot (battery, startup time, permission denials), but the core quality bar rests on two user-perceived rates:

  • User-perceived crash rate- the share of daily active users who hit at least one crash while actively using the app. Play's overall bad-behavior threshold is around 1.09%.
  • User-perceived ANR rate- the share of daily users who hit an "Application Not Responding" freeze (the main thread blocked ~5 seconds). Threshold: around 0.47%.

There's a second, stricter bar: the per-device thresholds (8% crash / 8% ANR on any single phone model). Exceed those and Play may steer users of that device away from your app - which is how a bug on one popular budget phone quietly kills your installs in an entire market.

Why "it works on my devices" isn't evidence

Crash and ANR regressions cluster on hardware and OS combinations you don't own: aggressive OEM memory management, vendor-modified WebViews, old Android versions with different permission behavior. The only place this population exists is production - which is why vitals monitoring and staged rollouts are two halves of one practice. The rollout limits the blast radius; vitals tell you whether to advance or halt.

ANRs: the sneakier of the two

Crashes are loud; ANRs are death by boredom - the user watches a frozen screen, force-quits, and often uninstalls without ever seeing an error. The usual suspects are main-thread I/O (disk, network, big JSON), synchronous work in broadcast receivers, and lock contention at startup. If your ANR rate is creeping, Play Console's vitals section clusters the traces; the fix is almost always "move this off the main thread," and finding this is the work.

A monitoring cadence that doesn't consume you

  1. During a rollout: check crash/ANR rates and new clusters before every percentage advance. This is non-negotiable and also automatable.
  2. Steady state: a weekly glance at the trend lines and any new cluster affecting more than a handful of users.
  3. Always:compare against your previous release, not just the threshold. A jump from 0.2% to 0.8% crash rate is a five-alarm regression that's still "green" by Play's bar.

Where this fits in the bigger picture

Vitals sit at the intersection of quality and growth: they gate your ranking, they generate the angriest reviews, and they're the signal that should halt a bad release before it spreads. That's why checking them during every rollout matters - and why Nalya watches your releases and notifies you the moment a rollout's status changes, so the scoreboard Google grades you on is one you never forget to check.