Performance Measurement for Native Apps
Article Summary
Supriyo Mondal from Walmart reveals how they shaved 500-600ms off view rendering times by changing a single boolean flag. Sometimes the biggest performance wins come from the smallest tweaks.
Walmart's mobile team built a comprehensive performance measurement framework that breaks down native app rendering into six distinct phases. By instrumenting everything from initialization to final render, they identified unexpected bottlenecks that backend optimization alone couldn't solve.
Key Takeaways
- Six-phase measurement: Initialize, Create Request, Network Call, Parse Response, Render View, Complete
- Disabling UICollectionView animations cut render time by 500-600ms with no visible UI difference
- Removing redundant observer listeners reduced initialization phase by 150ms
- A/B tests showed measurable GMV increase and significant cost savings
Client-side instrumentation uncovered that UI framework defaults were costing hundreds of milliseconds per view, leading to measurable business impact when optimized.
About This Article
Walmart's mobile engineering team found that they couldn't optimize view rendering performance by improving the backend alone. They needed to measure performance on the client side across the entire view lifecycle, from when it starts to when it finishes.
They built a client API that tracks six phases: Initialize, Create Request, Network Call, Parse Response, Render View, and Complete. The API calculates how much time passes between each phase so the team can pinpoint where rendering slows down in their native app.
After identifying and fixing framework-level issues like redundant observer listeners during initialization, Walmart saw improvements in gross merchandise value. Production A/B testing also helped them reduce operational costs.