Merging multiple mobile apps
The client - as a group - provides various services on the financial market. Initially, the client released and maintained separate native mobile apps for iOS and Android for each product. However, aiming to simplify product cross-selling and streamline the use of its products, the client decided to combine the functionality of all these apps into a single mobile app for iOS and Android.
Project in a nutshell
Industry
Financial
Technologies
Android: Android SDK (API level 33), Kotlin, Hilt, Coroutines, Android Jetpack libraries, Google Filament, Lottie, Firebase (Crashlytics, Firestore, Remote Config, FCM), jUnit, Espresso
iOS: iOS 16 SDK, Swift, SwiftUI, Combine, SceneKit, CoreData, Lottie, Firebase (Crashlytics, Firestore, Remote Config, FCM, Internal App Distribution), SwiftGen, XCTest
Duration
9 months
Team
2 Team Leads
5 Android Developers
5 iOS Developers
1 QA Specialist
1 UI Designer
1 UX Designer
1 Project Manager
1 Business Analyst
Form of cooperation
Agile, Time & Material
Scope
Product workshops & analysis
UI/UX design
Technical stack assessment
Native mobile apps
QA
SLA & maintenance
Innovations and challenges
As part of the innovations during the development of the app, we implemented full UI automated testing (Android Espresso + iOS XCTest). We also used only the latest libraries, architecture and components for iOS (SwiftUI, Combine) and Android (Kotlin, Hilt, Jetpack). By using Google Filament in Android and SceneKit in iOS, we implemented parts of the UI in 3D and even integrated the apps with Lottie to use vector animations.
The biggest challenge faced during the development of the new app was to combine 3 apps written in different architectures with legacy code (Java, UIKit). This required creating a new architecture and rewriting new technologies (100% Kotlin in Android and 100% Swift + SwiftUI). It also involved creating missing controls not available in SwiftUI. An additional challenge was to ensure the highest security standards in the highly fragmented world of Android by, among other things, using dedicated and widely recognised libraries such as Bouncy Castle. The client's requirement to ensure consistent app performance across multiple iOS versions did not make the work any easier.