Strava Todd Santaniello Apr 30, 2018

Android Guild Week at Strava

Article Summary

Todd Santaniello from Strava reveals what happened when their entire Android team stopped shipping features for a week. The goal? Break apart a 6.5-year-old monolithic codebase that was crushing build times and developer velocity.

Strava's Android team dedicated their Guild Week to modularizing their app, which had grown to 77% of code concentrated in a single module. They aimed to improve build speeds, code readability, and enable faster development iterations through mini-apps.

Key Takeaways

Critical Insight

One week of focused modularization created the foundation for 4x faster development cycles, despite short-term CI slowdowns that required infrastructure adjustments.

The authorization module extraction uncovered a surprising chain of dependencies that forced the team to rethink their entire approach to mini-apps.

About This Article

Problem

Strava's Android codebase had grown messy over the years. Base classes like StravaBaseActivity and StravaBaseFragment didn't follow composition principles, and legacy Views were stuck in the handset module because of tangled dependencies everywhere.

Solution

The team moved Views to MVVM and built simpler base classes in a new common-ui module. They also started writing README files for each module with clear ownership so future modularization work would have better guidance.

Impact

Build times dropped 4x when deploying mini-apps instead of the full handset APK. This made the daily development cycle much faster for feature teams.