Startup Time: Your App’s Make or Break Moment | by Dream Blog | Dream Locker Room | Medium
Article Summary
Dream11 serves 230M sports fans with 15M+ concurrent users during IPL. Their React Native app startup time was killing conversions.
The Dream11 engineering team broke down their app launch performance into measurable segments (TTID and TTFD) and systematically optimized each bottleneck. Here's how they reduced startup time and improved business metrics.
Key Takeaways
- Enabled Hermes binary bundle to shift JS compilation from runtime to build time
- Prefetched critical data during idle network time while app initialized
- Deferred hundreds of GraphQL function executions until actually needed
- Used Android baseline profiles for AOT compilation of startup paths
- Lazy loaded content providers and complex views with viewStub
Strategic optimizations across React Native, Android native code, and network layer delivered measurable startup time improvements that directly impacted contest participation rates.
About This Article
Dream11's React Native app was slow to start because hundreds of GraphQL-generated functions ran immediately when the app launched, blocking the display of the home screen.
The team deferred function execution until the app actually needed it. They turned on Metro's inline require flag to delay when modules loaded, and rewrote the Application and Launcher Activity onCreate methods to move heavy work to background threads instead.
Startup time improved noticeably, which meant the home screen appeared faster. Users could jump into contests sooner, and the business saw better engagement metrics as a result.