Compose Multiplatform

You might have thought I was done with mobile development talk. NEVER! lol Anyway I want to take this time to talk about my feels towards Compose Multiplatform and what I'm hoping happens over the near future.

What is Compose Multiplatform?

Compose Multiplatform (CMM) is a cross platform development solution for Android and iOS. With Compose you use kotlin and jetpack compose (or compose...not sure the difference) to build the UI. Backend you can also use kotlin if that's your jam (it's mine).

So this is Kotlin Multiplatform?

Nope. You would think that these should be one in the same but the mobile space is very strange. Kotlin Multiplatform (KMM) is more about having a unified backend and a native frontend using Jetpack compose or swift ui.

I guess the simple version is that KMM is only a half solution and CMM is for a fullstack solution.

What are you CMM thoughts?

I'm so glad you "asked". Let me set the scene for you first. I'm working on a side project with friends. At first we were going to go React Native (not my thing) and I would focus on DevOps. A company shift happened and we explored KMM. The KMM app went well, but we wanted a write once UI if possible. That's how we got to CMM.

The migration from KMM to CMM wasn't fun. I think it took me 2 weeks to figure it out. The folder structure changed, you have to use 3rd party navigation, there were no preview options, and the documentation was lacking. I think the worse part for me was not being able to quickly setup Azure devops to push apps out on commit. The way the iOS app gets packaged is with some type of kotlin wrapper. I'm sure I can figure it out when I'm not working so late but at this time that's not a thing.

I expected a smoother experience because I had a smooth one with other cross platform solutions. When you are thinking production apps I would also like to not need a bunch of 3rd party libraries. I know people are getting more serious about that and I appreciate it.

With a little more documentation and examples I can see CMM being a thing and maybe growing, BUT I think it needs to leave jetbrain's hands. The need a big backing like Google to really push it to the forfront. I would say they need a facebook or microsoft but they are pretty heavy react native.

I'll end my thoughts saying I still wouldn't use this if I was new to the space. I'm going to stick to my pov of learning native development of react native only. I'm just not sure this will be a breakout language platform and I don't even really like it right now. lol

Keheira's DevOps Moment

I just wanted to take this space to say that it should be easy to do CI/CD with CMM. There is some kotlin compile issue with iOS that is kinda hard to get through on Azure Devops. I stopped putting hours into it. What I noticed people doing was using fastlane.

If you want fast CI/CD without spinning your wheels join the others and just use fastlane.

I was using azure because that's what we had and it would be nice to take advantage of the platform since we haven't had anything setup with fastlane anyway.

TLDR Thoughts

CMM is still too new and too many kinks. I think they should have navigation sorted "natively" v having to pull in 3rd party libraries. I also believe in better getting started documentation. LASTLY going from KMM to CMM shouldn't be so confusing. It shouldn't be more than "add this folder and your good". A whole new structure and setup that can only be done from the web if not paying jetbrains is crazy.

On the other side of my thoughts...it would be a good time for google to drop flutter and invest in CMM. You are already tied into kotlin which is nice. Push it further by helping move the CMM platform. Flutter is not making gains like other platforms and a "new" language wasn't what we needed in this space. We need a unifying mobile dev language (which kotlin is) and a way to do multiplatform.


I have an ask...could you help me come up with some writing topics? I'd like to get back into blogging more. Suggestions can be posted here: https://forms.gle/3TdgpQy277Taewqo6