Turo Pavlo Stavytskyi Sep 20, 2022

How We Reduced Our Android Startup Time by 77%

Article Summary

Turo's Android team slashed their app startup time by 77%. Here's how they turned a sluggish launch into a lightning-fast experience.

The Turo Engineering team tackled one of mobile's toughest challenges: cold startup performance. Their approach combined eliminating blocking network calls, optimizing I/O operations, and leveraging Android's latest APIs to dramatically improve user experience.

Key Takeaways

Critical Insight

By removing synchronous network calls, optimizing disk I/O, and applying Baseline Profiles, Turo reduced cold startup time by 77% on average (84% at p50).

The team discovered that measuring startup time accurately was almost as challenging as optimizing it, requiring creative solutions to filter out misleading data.

About This Article

Problem

Turo's Android app made multiple synchronous network requests when starting up to fetch feature flags and route users. This caused inconsistent startup experiences depending on whether someone was a guest, host, or unauthenticated user.

Solution

Pavlo Stavytskyi's team switched to asynchronous feature flag fetching. The app now shows a home screen skeleton while requests happen in the background and defaults to the home screen for most users instead of blocking on redirect scenarios.

Impact

Feature flag requests no longer block startup. They complete in the background using cached values, so subsequent app launches don't need to show loading skeletons at all.