Scaling Slack’s Mobile Codebases: Modernization

This post details the 'Modernization' phase of Slack's Duplo initiative for mobile codebases. On iOS, it covers adopting a VIPER-variant feature architecture, implementing stricter linting rules to prevent anti-patterns, increasing Combine adoption for reactive programming (temporarily using CombineX), and driving further adoption of the SlackKit design system. On Android, it details migrating to modern libraries like Moshi (replacing Gson), WorkManager (replacing Android Priority Job Queue), and an internal networking library called Guinness. It also discusses establishing best practices for Coroutines and experimenting with Jetpack Compose. The post concludes with Duplo initiative results, showing significant improvements in codebase modernization and modularization percentages, reduced CI build times, and improved CI build stability.