Airbnb's Page Performance Score on Android
Article Summary
Airbnb moved beyond Time To Interactive to measure what users actually see. Their Page Performance Score tracks visual wait time, not just code execution.
Airbnb's Android team built a Fragment-based instrumentation framework to capture user-centric performance metrics. This is part 4 of their series on implementing PPS across platforms.
Key Takeaways
- LoadableView API tracks when loading indicators appear and disappear on screen
- TTFL measures first content, TTIL tracks loading states, MTH catches frame drops
- Visibility calculations optimized for RecyclerView scrolling performance
- Main Thread Hangs defined as frames taking 2x the device refresh rate
- Rich Content Load Time separately measures image and media placeholder duration
Airbnb created a standardized Android framework that measures perceived wait time instead of backend execution time, giving engineers actionable insights into real user experience.
About This Article
Airbnb engineers faced a challenge with tracking view visibility during RecyclerView scrolling. The problem was that visibility calculations happened frequently and recursively across thousands of views, which threatened to hurt performance.
Luping Lin's team built algorithms that cut down how often and how complex these calculations needed to be. They cached visibility states within the RecyclerView so that only views at least 10% visible on screen would be counted.
With these improvements, the team could accurately measure Additional Load Time and Rich Content Load Time metrics. The RecyclerView maintained good performance even when users scrolled quickly.