---
title: "App stability at scale with a layered defense"
description: "Grab, a superapp with over 100 million Google Play downloads, maintains mobile stability through a layered defense that shifts crash detection left. The strategy spans lint rules, tests, and a one-week Grab Early Access (GEA) pre-production gate, followed by staged rollout and feature flags, then production monitoring with automated triage. Custom lint rules block patterns from prior production crashes, ensuring new code—including AI-generated changes—avoids known pitfalls. GEA catches crashes under real-world conditions before they reach production, and each caught crash prevents a long-tail impact on users without auto-update. A crash that reaches production may require an out-of-cycle hotfix, pulling time from planned work. The principle behind every layer is that a crash caught earlier is cheaper and less disruptive to fix."
---

# App stability at scale with a layered defense

[Grab](https://yomu.fyi/company/grab) · Nguyen Van Minh · Oct 21, 2026

**Type:** Explainer

## Summary

Grab, a superapp with over 100 million Google Play downloads, maintains mobile stability through a layered defense that shifts crash detection left. The strategy spans lint rules, tests, and a one-week Grab Early Access (GEA) pre-production gate, followed by staged rollout and feature flags, then production monitoring with automated triage. Custom lint rules block patterns from prior production crashes, ensuring new code—including AI-generated changes—avoids known pitfalls. GEA catches crashes under real-world conditions before they reach production, and each caught crash prevents a long-tail impact on users without auto-update. A crash that reaches production may require an out-of-cycle hotfix, pulling time from planned work. The principle behind every layer is that a crash caught earlier is cheaper and less disruptive to fix.

## Context

Grab, a superapp serving millions across Southeast Asia, faces increasing crash risk from high code-change velocity, weekly releases, and AI-assisted coding. Mobile crashes are particularly costly: they persist on user devices, degrade Google Play ranking, and may require out-of-cycle hotfixes. The article details Grab’s layered defense across Android and iOS to prevent, contain, and respond to crashes at scale.

## Approach / What changed

A shift-left layered defense strategy for mobile app stability, comprising lint checks (Android Lint/SwiftLint) and tests (unit, UI component, E2E, QA) in prevention; Grab Early Access (GEA) as a pre-production gate; staged rollout and feature flags as a release gate; and production monitoring with crash triage and custom metadata for post-release response.

## Takeaways

- Grab’s custom lint rules—built from post-mortem crash pattern lessons—apply equally to hand-written and AI-generated code, blocking known failure patterns before they merge.
- Grab Early Access (GEA) is a mandatory one-week pre-production gate with active crash monitoring; any new crash automatically creates a ticket for the responsible team and must be resolved before release.
- The layered defense includes a release gate of staged rollout and feature flags, so a crash reaching production is contained to a fraction of users, and a hotfix can be shipped without a full rebuild.

## FAQ

### How does Grab create custom lint rules from crash insights?

When a post-mortem or crash investigation traces a production crash to a specific code pattern, Grab writes a custom lint rule that blocks that pattern from returning. This ensures lessons apply equally to hand-written and AI-generated code.

### What is Grab Early Access (GEA) and how does it work as a stability gate?

Grab Early Access (GEA) is a one-week pre-production build with active crash monitoring. Any new crash automatically creates a ticket for the responsible team, which must resolve all blocking issues before the release proceeds to production. This catches crashes that only surface under real-world conditions, before they reach production users.

### How does Grab investigate crashes with unusable stack traces?

When a crash lacks a usable stack trace (e.g., native crashes without debug symbols), Grab's triage process cross-references release timelines, flag rollout schedules, install sources (Google Play vs. third-party), and the session history reconstructing the sequence of screens and actions leading up to the crash.

**Tags:** [AI](https://yomu.fyi/topic/ai), [Android](https://yomu.fyi/topic/android), [iOS](https://yomu.fyi/topic/ios), [Mobile](https://yomu.fyi/topic/mobile), [Release Engineering](https://yomu.fyi/topic/release-engineering)

- Source: [Grab](https://engineering.grab.com/app-stability-at-scale-with-a-layered-defense)
- Source URL: https://engineering.grab.com/app-stability-at-scale-with-a-layered-defense
- Ingested by Yomu: 2026-10-21T03:00:13.239Z

[Read original post](https://engineering.grab.com/app-stability-at-scale-with-a-layered-defense)
