Tracking app responsiveness at scale using JankStats
summary
Bitdrift integrates JankStats (Jetpack, ~5 KB) into production observability to record per-frame durations and categories, attach a frame listener to the current window via lifecycle hooks and a WindowSpy, and send session timelines with screen name and metadata. Integration distinguishes API 24+ uses FrameMetrics, <24 uses Choreographer, flags janky/slow/frozen/NR frames, surfaces surprising cases like 10+ second ANR frames where the app recovers and memory-GC spikes before OOM, and reports no measurable overhead when callbacks stay lightweight.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 1:05App responsiveness challenges
- 3:11ANRs and frame drops
- 5:19Main thread vs render thread
- 6:21Limitations of monitoring tools
- 7:23Introducing JankStats
- 8:49Setting up JankStats
- 10:16Tracking app launch
- 12:01Detecting junk frames
- 13:50Collecting session data
- 15:38Root causes of issues
- 16:21Aggregating frame data
- 17:25How JankStats works
- 18:29JankStats vs other tools
- 19:14Key takeaways
related talks
33mAndroid Benchmarking and other stories
40mAttributed Everything: Ensuring Quality for Large Apps
10mMeasuring Jank and Startup with Macrobenchmark
41mDeep dive into Android Studio Profilers
40mMonitor App performance using Jetpack Benchmark
18mBeyond the Basics: Performance Monitoring and User Experience for Mobile App Growth
38mA Busy Android App Developers' Guide to Perfetto
25mJetpack Benchmark and where to find them
