How Uber Standardized Mobile Analytics for Cross-Platform Insights
Article Summary
Ben Hjerrild and the Uber Mobile Data Platform team just solved a problem every mobile org faces: analytics chaos. Over 40% of their events had become meaningless custom logs, and iOS/Android were tracking things completely differently.
Uber's mobile analytics system processes millions of events daily across Rider, Driver, and Eats apps. But inconsistent instrumentation, missing metadata, and platform discrepancies made the data nearly impossible to trust. The team rebuilt their entire analytics stack from the ground up.
Key Takeaways
- Reduced impression overcounting by 30% with stricter visibility rules (50% visible, 500ms)
- Cut instrumentation code from dozens of lines to just a few per event
- Moved emission logic into AnalyticsBuilder classes, separating concerns from View logic
- Introduced 0.1% sampled coverage so disabled events remain queryable
- Componentization will halve mapping effort: one UUID instead of two per component
Uber standardized tap, impression, and scroll events across iOS and Android, automatically attaching metadata and cutting engineering effort while improving data quality by 30%.
About This Article
Uber's mobile teams didn't have standard event definitions. This forced 40% of events into catch-all custom logs, and the data ended up fragmented across iOS and Android with inconsistent emission rules.
The Mobile Data Platform team built AnalyticsBuilder classes to handle emission logic. They defined core event types like tap, impression, and scroll with consistent rules. The system automatically attached app-level and event-type metadata across all UI components.
Engineers went from writing dozens of lines of instrumentation code per event down to just a few lines. Data consumers got cross-platform parity and stopped seeing transient-view impressions by using a standardized 500ms visibility threshold.