Grab's Android team built a custom Focus plugin to tackle severe IDE performance issues in a 2,000-module, 11M-line monorepo. Full Gradle syncs took 35+ minutes and consumed 10 GB of memory. Their solution pre-computes the dependency graph during an existing Bazel migration task, then uses a Groovy 'include' shadowing trick to selectively load only the modules a developer needs. An Android Studio plugin provides a UI for module selection, dependency count visibility, and automatic argument injection. Results: sync times dropped to under 2 minutes for typical feature work, memory usage fell from 10 GB to 2 GB, and Compose preview builds became significantly faster — all with zero workflow changes required from feature teams.
Table of contents
IntroductionOur Android monorepo at scaleThe problemInvestigationOur solution: Building a custom Focus pluginHow we measureResultsConclusionJoin usSort: