How we achieved a 6x reduction of ANRs - Part 1: Collecting Data
Article Summary
Bumble's Android app was bleeding users to ANR dialogs. Their ANR rate sat above Google Play's threshold, threatening search rankings and user trust.
Bumble's engineering team formed a dedicated squad to tackle their Application Not Responding crisis. This deep dive reveals how they built the data infrastructure needed to understand and fix ANRs at scale.
Key Takeaways
- 60% of ANRs occurred during Application.onCreate after scraping Google Play reports
- Built custom watchdog thread to detect main thread freezes beyond 5 seconds
- Integrated ANR tracking into internal crash tool Gelato for advanced filtering
- Google removed raw ANR export via Cloud Storage, forcing creative workarounds
- Used Selenium web scraper to download thousands of individual ANR reports
Bumble achieved a 6x reduction in ANRs by first building robust tracking through custom tooling, web scraping, and internal crash analytics integration.
About This Article
Bumble's Badoo app was hitting an ANR rate of 0.47%, which exceeded Google Play's threshold. This risked search ranking penalties and user churn. When the main thread blocks for 5+ seconds, users see an 'Application Not Responding' dialog.
Nickolay Chameyev's team used the ANR-WatchDog library to build a watchdog thread that monitors the main thread for freezes. They then fed the data into Gelato, their internal crash analytics tool. This gave them better filtering and the ability to run A/B test comparisons.
The team combined Google Play scraping with Selenium, custom watchdog detection, and Gelato integration to find that Application.onCreate was a bottleneck. After optimizing it, they hit their goal of a 6x ANR reduction.