I’m working on a production Android application and I’m trying to settle on an architecture that will remain maintainable as the project grows.
For a new Android project in 2026, would you recommend a fairly standard approach such as:
- Kotlin
- Jetpack Compose
- MVVM
- ViewModel
- Repository pattern
- Coroutines / Flow
- Room for local data
- Retrofit or another API client
- Hilt for dependency injection
Or are there situations where you’d use a different architecture, particularly for larger applications with multiple modules and a fairly complex backend?
I’m especially interested in how people are handling:
- Modularization
- Offline-first functionality
- State management with Compose
- API and repository layers
- Testing ViewModels and business logic
- Keeping the codebase manageable as the number of features increases
For those who have maintained production Android applications for a few years, what architectural decisions turned out to be worthwhile, and what would you avoid if starting the project again?