{"id":8718,"date":"2026-11-08T23:12:30","date_gmt":"2026-11-08T23:12:30","guid":{"rendered":"https:\/\/lockitsoft.com\/?p=8718"},"modified":"2026-11-08T23:12:30","modified_gmt":"2026-11-08T23:12:30","slug":"grab-transforms-its-southeast-asian-superapp-architecture-to-slash-app-size-and-eliminate-performance-bottlenecks","status":"publish","type":"post","link":"https:\/\/lockitsoft.com\/?p=8718","title":{"rendered":"Grab Transforms Its Southeast Asian Superapp Architecture to Slash App Size and Eliminate Performance Bottlenecks"},"content":{"rendered":"<p>Managing a massive, decade-old software architecture supporting millions of daily active users presents an extraordinary engineering challenge, particularly when operating at the scale of Southeast Asia\u2019s leading superapp, Grab. Spanning eight countries and integrating a sprawling ecosystem of mobility, food delivery, grocery services, and fintech solutions into a single entry point, the platform&#8217;s codebase had ballooned to over 10 million lines of code. Built upon a hybrid Bazel and Gradle build setup, this immense digital infrastructure began showing visible strains. Engineering teams observed steady year-over-year increases in cold start times, persistent App Not Responding (ANR) spikes immediately following weekly updates, and a continuous upward creep in application download size. <\/p>\n<p>To confront these compounding technical hurdles head-on, Grab&#8217;s Passenger App Core team embarked on a multi-phase optimization initiative. By systematically integrating advanced Android build optimizations\u2014specifically leveraging R8 code shrinking, transitioning to R8 Full Mode, refining keep rules via Configuration Analyzer, and deploying custom Baseline Profiles and Startup Profiles\u2014the engineering organization achieved remarkable results. Grab successfully slashed its user-perceived ANR rate by approximately 32.5%, reduced its application download size by roughly 30.4%, and accelerated cold start performance by 35%. This technical overhaul not only solved immediate post-release stability issues but also established a sustainable framework for long-term codebase health in the era of AI-assisted, rapid feature development.<\/p>\n<p>The Anatomy of Superapp Bloat and Early Stability Challenges<\/p>\n<p>The fundamental architectural dilemma facing Grab stemmed from the sheer density of its application package. As a superapp, Grab functions as an umbrella for dozens of distinct services. Each vertical\u2014from ride-hailing and parcel delivery to digital banking and merchant tools\u2014requires extensive dependency graphs, notably Dagger initialization frameworks during application launch. Historically, every weekly app update triggered predictable performance regressions. Cold start delays and sudden ANR spikes plagued users immediately post-release, driven primarily by the high Input\/Output (I\/O) overhead required to read numerous DEX (Dalvik Executable) files during the critical startup window.<\/p>\n<p>While Google Play\u2019s default Cloud Profiles offered a baseline level of optimization across the broader Android ecosystem, they proved insufficient for Grab&#8217;s complex, deeply customized user journeys. Cloud-based profiling could not adequately predict or optimize every proprietary initialization path required during a Grab cold start, such as complex dependency graph resolutions. Consequently, devices that downloaded unoptimized code paths were forced to rely on Just-In-Time (JIT) compilation and local background optimization over the span of several days. This lag left a significant window of vulnerability where users experienced sluggish responsiveness and heightened crash rates right after updating the application.<\/p>\n<p>&quot;We consistently experienced ANR rate spikes with every weekly app release,&quot; noted Nguyen Van Minh, Lead Software Engineer on Grab&#8217;s Passenger App Core team. Recognizing that legacy configuration management was no longer viable for a platform of this magnitude, the engineering leadership authorized a comprehensive, phased refactoring of the build pipeline and compilation strategy.<\/p>\n<figure class=\"article-inline-figure\"><img decoding=\"async\" src=\"https:\/\/developer.android.com\/static\/blog\/assets\/ANDDM_Grab_Strapi_2000x1000_STATIC_1_dbb884ce74_SODRQ.webp\" alt=\"Grab Reduces ANRs by 32% and improves startup time by 35% with R8 and Profile guided optimization | Android Developers&apos; Blog\" class=\"article-inline-img\" loading=\"lazy\" \/><\/figure>\n<p>Chronology of the Optimization Roadmap: Phase 1 through Phase 3<\/p>\n<p>Grab\u2019s performance rescue mission unfolded across three meticulously planned stages, executed over a multi-year timeline stretching from initial deployments to ongoing governance implementations.<\/p>\n<p>Phase 1: Introducing R8 Optimization and Profiling (Shipped 2025)<br \/>\nThe initial phase marked a decisive departure from legacy Proguard configurations. Grab transitioned to the modern <code>proguard-android-optimize.txt<\/code> template, enabling core R8 compilation optimizations. Given that the codebase had evolved over ten years and accumulated more than 10 million lines of code, simply flipping the switch on the optimizer required untangling decades of legacy configurations and hidden reflection dependencies.<\/p>\n<p>To maximize the immediate impact of this foundational shift, the engineering team bundled R8 Compat mode with custom Baseline Profiles and Startup Profiles. Profile-guided optimization allowed critical user journeys to be compiled directly into machine code upon installation, bypassing the need for sluggish local JIT compilation cycles. The results of this synchronized effort were immediate: a 25% drop in user-perceived ANR rates, a 16% reduction in app download size, and an overall 27% improvement in cold start execution times.<\/p>\n<p>Phase 2: Migrating to R8 Full Mode (Shipped 2026)<br \/>\nBuilding upon the stabilization achieved in Phase 1, Grab advanced to R8 Full Mode approximately nine months later. This transition unlocked aggressive code shrinking, obfuscation, and optimization capabilities that standard compatibility modes cannot execute. Standard libraries\u2014including Retrofit, Firebase, and Jetpack Compose\u2014integrated smoothly via built-in rules, but navigating the massive proprietary codebase required surgical precision.<\/p>\n<p>A primary technical hurdle during Full Mode migration involved Java dynamic proxies and reflection-heavy code paths. Dynamic proxies generate runtime interface implementations via reflection, a mechanism entirely opaque to static compilation analysis. Unchecked, R8 interprets these classes as unused and strips or renames them, causing immediate runtime application crashes. Rather than applying broad, indiscriminate exceptions that would bloat the binary, Grab\u2019s engineers isolated specific classes relying on reflection and crafted highly targeted keep rules. <\/p>\n<p>To handle complex JSON parsing safely, the team adopted official consumer keep rules from the latest Gson releases. The payoff for this rigorous migration was substantial: an additional 14% reduction in app download size, a 10% boost in startup speed, and a further 10% decrease in user-perceived ANRs.<\/p>\n<figure class=\"article-inline-figure\"><img decoding=\"async\" src=\"https:\/\/developer.android.com\/static\/blog\/assets\/ANDDM_Grab_Inline_Quote_ALT_c3acc32799_Z1obrOp.webp\" alt=\"Grab Reduces ANRs by 32% and improves startup time by 35% with R8 and Profile guided optimization | Android Developers&apos; Blog\" class=\"article-inline-img\" loading=\"lazy\" \/><\/figure>\n<p>Phase 3: Keep-Rule Refinement and Continuous Governance<br \/>\nHaving secured immediate performance gains, Grab shifted its focus toward institutionalizing long-term codebase health. The third phase centered on eliminating rule degradation through systematic keep-rule trimming and automated compliance checks. By integrating the R8 Configuration Analyzer into their evaluation workflows, developers gained granular visibility into how effectively their custom rules permitted R8 to shrink and optimize the binary.<\/p>\n<p>This meticulous trimming yielded an additional ~3.6% reduction in app download download size. More importantly, it provided the engineering organization with objective metrics to establish automated pre-merge CI\/CD guardrails. These guardrails ensure that any newly introduced code adheres strictly to established keep-rule standards, preventing performance regressions from creeping back into subsequent release cycles.<\/p>\n<p>Cumulative Performance Outcomes<\/p>\n<p>The quantifiable impact of Grab\u2019s multi-phase optimization initiative transformed the user experience across its entire Southeast Asian market footprint. According to internal production telemetry, the cumulative performance metrics underscore the profound effectiveness of modern Android build engineering:<\/p>\n<p>\u2022 ANR Reduction: User-perceived App Not Responding events dropped by a cumulative ~32.5%, effectively eliminating the post-release stability spikes that historically accompanied weekly updates.<br \/>\n\u2022 Application Download Size: The total binary footprint shrank by ~30.4%, easing download friction for users operating on varied cellular data plans across emerging markets.<br \/>\n\u2022 Startup Latency: Cold start execution times improved by ~35%, driven by a 12% boost from R8 optimization, a 15% gain from Baseline Profiles, and subsequent refinements.<\/p>\n<p>Long-Term Structural Impact and AI-Era Code Scalability<\/p>\n<p>Beyond immediate consumer-facing metrics, the architectural overhaul secured a permanent structural advantage for Grab\u2019s engineering division. Using the open-source evaluation tool <code>app-sizer<\/code>, the team measured the cost of code expansion relative to download size. The analysis revealed that R8 permanently lowered the marginal size cost of every individual line of production Kotlin and Java code added to the repository.<\/p>\n<figure class=\"article-inline-figure\"><img decoding=\"async\" src=\"https:\/\/developer.android.com\/static\/blog\/assets\/ANDDM_Grab_Inline_Metric_62758be722_2nf419.webp\" alt=\"Grab Reduces ANRs by 32% and improves startup time by 35% with R8 and Profile guided optimization | Android Developers&apos; Blog\" class=\"article-inline-img\" loading=\"lazy\" \/><\/figure>\n<p>This structural efficiency holds profound implications for the modern software development lifecycle. In an era dominated by AI-assisted coding tools capable of rapidly generating vast volumes of boilerplate and feature logic, codebase expansion has accelerated dramatically. Without aggressive optimization layers like R8, this rapid code growth would trigger exponential application bloat. Grab&#8217;s implementation ensures that even as the superapp expands its feature set, its memory and storage footprint remains tightly controlled.<\/p>\n<p>Industry Implications and Future Outlook<\/p>\n<p>Grab\u2019s engineering milestone serves as a compelling blueprint for large-scale mobile application developers worldwide. As mobile ecosystems grow increasingly complex, relying solely on cloud-provided defaults is often insufficient for enterprise-grade applications with intricate dependency structures. By taking proactive control of compilation modes, investing in custom profiling, and enforcing strict CI\/CD governance over keep rules, organizations can successfully reconcile rapid feature delivery with uncompromising performance.<\/p>\n<p>For millions of commuters, diners, and financial service users across Southeast Asia, these technical refinements translate into a faster, more reliable, and seamless daily digital experience. For developers, Grab&#8217;s journey illustrates that maintaining a decade-old codebase does not necessitate inevitable performance decay\u2014provided the organization is willing to embrace modern architectural governance and continuous compiler optimization.<\/p>\n<!-- RatingBintangAjaib -->","protected":false},"excerpt":{"rendered":"<p>Managing a massive, decade-old software architecture supporting millions of daily active users presents an extraordinary engineering challenge, particularly when operating at the scale of Southeast Asia\u2019s leading superapp, Grab. Spanning eight countries and integrating a sprawling ecosystem of mobility, food delivery, grocery services, and fintech solutions into a single entry point, the platform&#8217;s codebase had &hellip;<\/p>\n","protected":false},"author":19,"featured_media":8717,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[4,283,3053,3748,5,3195,4718,3,282,4018,4017,3281,4717,3643],"class_list":["post-8718","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-application-development","tag-apps","tag-architecture","tag-asian","tag-bottlenecks","tag-development","tag-eliminate","tag-grab","tag-mobile","tag-performance","tag-size","tag-slash","tag-southeast","tag-superapp","tag-transforms"],"_links":{"self":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8718"}],"version-history":[{"count":0,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8718\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/media\/8717"}],"wp:attachment":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}