Grab Renu Yadav Dec 26, 2019

Journey to a Faster Everyday Super App: Where Every Millisecond Counts

Article Summary

Grab reduced their super app's startup time by 60% while shipping dozens of new features. Here's how they saved users 59,582 hours per day.

Grab's mobile engineering team spent 2019 systematically attacking app performance bottlenecks. They measured everything at scale (8-9 million users daily), focused on p95 metrics, and made tough architectural decisions that affected every team.

Key Takeaways

Critical Insight

By focusing on Time to Interactive and preventing regressions, Grab improved p95 startup performance by over 60%, saving users the equivalent of watching all Friends episodes 250+ times daily.

The team's visualization setup in H2 2019 changed everything about how they identified and prioritized performance wins, including improvements worth just 0.05 seconds.

About This Article

Problem

Grab's iOS passenger app had 107 dynamically linked frameworks, which pushed pre-main startup time to 7.9 seconds. Apple recommends a maximum of six dynamic frameworks for good performance, so this was well over the limit.

Solution

The engineering team took several steps to fix this. They statically linked 75 frameworks and deleted 12 that weren't being used. They also merged 10 remaining dynamic frameworks into 2 using a custom Cocoapods Merge plugin they built and open-sourced. This brought the total down to 12 dynamic frameworks.

Impact

The static linking and framework merging cut iOS p90 pre-main time by 41%, saving about 0.8 seconds. This contributed to a 60% overall reduction in app startup time.