Android Search Performance Improvements (Part 1)
Article Summary
Yelp users were literally grunting while waiting for search results to load. That's when the Android team knew they had a performance problem.
Yelp's Android team tackled search performance by breaking it into two categories: perceived search performance (time to first result) and scroll performance (maintaining 60fps). This first part of their series focuses on establishing baseline metrics before optimization.
Key Takeaways
- Reduced perceived search rendering time from 350ms to 190ms at p50
- 33% of frames were dropped during scroll (missing the 16ms target)
- Tested on 5 year old Nexus 5 to catch issues affecting older devices
- Used FrameMetrics API and Splunk to measure client side rendering separately from network
- Tracked p90 performance (656ms to 394ms) to ensure no user left behind
By measuring the right metrics across device generations, Yelp cut search rendering time nearly in half and identified that a third of scroll frames were janky.
About This Article
Yelp's Android search results took 350ms to render at the median. Users at the 90th percentile saw delays of 656ms, caused by client-side processing bottlenecks rather than network issues.
Tyler Argo's team built a performance improvement process using the Measure-Improve-Monitor-Repeat framework. They used Splunk metrics to find where time was being spent on the client by comparing search_request duration against search_results_loaded timing.
Client-side rendering dropped to 190ms at p50 and 394ms at p90. Scroll performance improved too, going from 33% dropped frames to a smooth 60fps across different devices.