Duolingo Aug 26, 2021

Android App Excellence: Duolingo

Article Summary

Duolingo's Android app was degrading 5-10% every month. New features meant guaranteed performance regressions every 90 days.

With 10M daily learners, Duolingo's team halted feature development for two months to fix their architecture. They migrated from a monolithic global state object to MVVM with Dagger and Hilt, fundamentally restructuring how their Android app handles state and dependencies.

Key Takeaways

Critical Insight

Duolingo shipped new features for six months post-refactor without significant performance regressions, ending a cycle of monthly degradation.

The article reveals how their dependency injection strategy made debugging unfamiliar code dramatically easier for the entire team.

About This Article

Problem

Duolingo's global DuoState object created tight coupling throughout the codebase. Updates cascaded unpredictably, causing rendering performance to degrade and crashes to spike with each release.

Solution

The team switched to MVVM architecture using Dagger and Hilt for dependency injection. They broke up the monolithic state into smaller scoped repository objects, which let multiple modules run on separate threads.

Impact

After the refactor, Duolingo saw a 41% drop in daily ANR rate, 28% improvement in frame rate consistency, and 40% faster scrolling over six months of ongoing feature work.

Recent from Duolingo

Related Articles