•
Client: a major bank in Ecuador (under NDA)
•
Product: banking super app built with Kotlin Multiplatform
•
My role: Software Development Engineer, mobile architecture
•
Stack: Kotlin Multiplatform, Android, iOS
•
Result: a modular architecture, with Android Dynamic Feature Delivery enabled
A super app keeps adding features. Without dynamic feature modules, every one of them goes into the base app that every user downloads, and they all ship together. The app also had to support Android Dynamic Feature Delivery, which only works when each feature lives in its own module.
I worked on refactoring the codebase so each feature lives in its own module, on top of the shared Kotlin Multiplatform code. On Android, those feature modules can now be delivered on their own. On iOS, the platform's architecture makes this kind of split much harder, so the modular delivery work focused on Android.
The app now has a modular architecture, and Android Dynamic Feature Delivery became possible: feature modules can be delivered separately instead of all shipping inside the base app.
What I'd tell another team
If you're building a super app, plan your module boundaries early. Splitting a grown codebase later can be done, but it takes a lot more work.