Centralized Dynamic Navigation at Scale: Zero Crashes, Module Independence, Faster Delivery
Article Summary
Aditya Singh from slice engineering solved a problem that haunts every Android team at scale: navigation crashes from circular dependencies. His team hit zero navigation crashes in production with a runtime graph resolution approach.
Large Android apps with 20+ feature modules face a brutal tradeoff: either tightly couple modules through navigation dependencies, or risk IllegalArgumentException crashes from circular graph inclusions. slice engineering's solution treats all navigation as deep links and loads destination graphs only at runtime when needed.
Key Takeaways
- Zero navigation crashes in production since rollout, 100% success rate
- Destinations load lazily at runtime, avoiding circular dependency hell
- New modules onboard by adding one path prefix, no cross-module edits
- Memory and startup stay lean: no pre-inflated unused graphs
- Routes switchable via config without app releases
Critical Insight
By dynamically resolving navigation graphs at runtime instead of compile time, slice achieved zero navigation crashes while eliminating cross-module coupling across 20+ feature teams.