Measuring Performance for iOS Apps | App Startup
Article Summary
Uber's iOS app startup metrics became 130% inflated overnight. The culprit? iOS 15's pre-warming feature broke their entire measurement system.
Uber's engineering team shares how they rebuilt their iOS app startup performance measurement system to handle Apple's pre-warming feature. This deep dive from Rajat Sharma and Ugo Nwakama reveals the architecture behind monitoring cold launch times across millions of users.
Key Takeaways
- Pre-warming in iOS 15 made traditional pre-main measurements unreliable
- Switched to MetricKit's MXAppLaunchMetric combined with custom post-launch tracking
- Built pipeline processing millions of histogram rows into scalar metrics
- New system tracks pre-launch and post-launch spans with scene delegate support
- Aggregates data at 50th, 75th, 90th, and 95th percentiles for holistic view
Critical Insight
Uber now reliably measures iOS startup latency by combining Apple's MetricKit data with custom instrumentation, creating guardrails that protect performance across hundreds of weekly code changes.