Hello team, Warm greetings! We have android app written in kotlin and we have good expertise in it,...
p
Hello team, Warm greetings! We have android app written in kotlin and we have good expertise in it, Now we are looking to launch iOS as well, for that we are evaluating flutter and KMM, Our criteria: We want to keep very lean team, max 2-3 for mobile development We are bootstrapped and would like to keep cost as low as possible We are looking to launch in next 3 months Our app is a consumer app and have good animations and UI components (experience app) Rationals: If we go for flutter: 1. we have to write from scratch 2. have to build a new flutter team from scratch 3. all exiting code is just waste, 4. but we get a single code base which is good for us in future, 5. with little effort we can get web as well If we go with KMM: 1. we can reuse the same code base with some effort to make is KMM compatible 2. we can write iOS ui and build the iOS app with same logic 3. But KMM is not yet mature enough yet to make this shift Team @here looking for pointers in which stack we should go for,?
j
What is the basis for "KMM is not yet mature enough yet to make this shift" ?
p
I talked to few people in the service domain, and found out that not much people are using it yet, and community is still developing . Having a small team we might suffer with slow development for the lack knowledge and support,
c
No matter the stack, a small team that doesn't know the stack will not be productive. No matter the stack, a small team that does know the stack will be productive.
p
Totally agree @CLOVIS, If we go with KMM we are planning to hire a consultant for the same,
also the KMM resources are difficult to find in market
j
re. "not much people are using it yet", you might find this useful https://kotlinlang.org/lp/multiplatform/case-studies/
p
Thanks @John O'Reilly will go through it,
p
It also depends on the size of the codebase and the architecture of the project if you will be able to transition to KMM easily. Like if your app is full XML, MVP, and android specifics are deeply incorporated in all the layers, then you basically would need to rewrite the whole app from scratch just like with flutter or any other new stack
j
That's not strictly true I think. KMM typically involves the sharing of non-UI code so shouldn't matter too much how your UI layer is structured....the power of KMM is that you can share as little or as much as you want. If you're using MVP as you say then perhaps you start by pulling in shared code for your repository or even use case layer if using that.
But if as you say there's android specific code in non-UI parts of the app then, yes, that will require some changes.
this is where perhaps expect/actual mechanism will come in to play
r
if you choose Kmm you also get native UI feel and performance (SwiftUI, UIKit) it could be very beneficial if you have lot of animations
d
I have ported my Android app to iOS using KMM. It has taken 2+ years with 1 developer (me) but that time was not all attributed to KMM. It's a fairly complex app and I was coming from Java and very old design patterns. My Java based Android app is still on Google Play but I'm developing the KMM Android app in tandem with iOS. The app is in TestFlight with 300+ testers. PM me if you'd like to compare/test the app - I'm not sure if I'm allowed to share the app name or TestFlight codes here.
p
Thank you everyone for your insights here friends, this should help us take the right decision
@Duane Malcolm I will PM you,
Guys can you help on what skill sets we should look for when we are hiring got KMM, Like it is difficult to find KMM person, so should look for kotlin developer? or look for iOS person?
c
Ideally, you'd want: • someone who knows Kotlin really well • someone who knows iOS dev really well • someone who has made a KMP project before (even if it's just a pet project, you need someone who knows how to set it up)
It's even better if they are the same person, but that's probably hard to find. If they're different people, they must be good at communication and be willing to learn new ways to do stuff
d
Gradle skills too.
p
Got it, thank you @CLOVIS and @Duane Malcolm 🙂