Mobile SDK Update for an Online Payment System
The existing functionality enhancement often helps improve product metrics dramatically. This case study tells about our cooperation with a large international provider of online payment services. We updated the old mobile SDK and developed a new version from scratch.
Task
The Customer contacted us in 2021. Its product is a global payment system that supports over 100 payment methods. In connection with the launch of a new business line, the company decided to create a new version of the existing mobile SDK (Software Development Kit). We had to fix several key bugs that affected the success of payments, as well as "teach" the SDK to adjust the app view when connecting new partners. We had to develop new functionality, update the color palette and add new UI elements.
Difficulties
At the start of the project, we faced several problems:
- strongly coupled code of the current mSDK, no unified architecture;
- old technology stack, no code automation;
- 90% of the code was written in Java, which significantly slowed down new functionality development due to the language peculiarities;
- no unified approach to layout;
- multiple code duplication (no correct hierarchy of class inheritance).
Process
We divided the work to be done into several stages and proceeded to carry out each stage one by one.
Stage 1. Updating the build tools:
- Android Gradle plugin update;
- implementation of product flavors;
- setting up build variants for testing;
- Fastlane implementation.
Stage 2. Code coupling reduction, optimization, refactoring:
- division into submodules (Core + UI);
- encapsulation of logic into separate methods/classes;
- XML layout optimization;
- bug fixes + associated refactoring;
- removal of duplicate code (generalization of functionality).
Stage 3. Development of a new library using an up-to-date stack:
- creating a core module based on Kotlin Multiplatform;
- architecture: MVVM + MVI;
- 100% of code is Kotlin-based;
- UI on Jetpack Compose (Android) and SwiftUI (iOS);
- implementation of analytics collection;
- automation (Unit/UI testing).
Result
We completed all tasks on time and the сustomer was completely satisfied with the quality of our work. The number of successful payments made through the mobile SDK increased from 30% to 75%.
Technology
Kotlin Multiplatform, Swift, SwiftUI, MVVM, MVI, Jetpack Compose, Ktor