On October 5, 2022, JetBrains officially announced that Kotlin Multiplatform Mobile is in Beta, and has been encouraging teams of all sizes to put it in production with the promise that the path to stable code will involve minimal impact for developers. From the beginning, Touchlab has been working with teams to implement KMM in production apps, as well as develop solutions to make KMM adoption easier for both individual developers and mobile dev teams. Now is the time to start your KMM adoption journey.
State of KMM in 2022/3
Touchlab’s mobile dev team has been an active part of the growing KMM community since its inception. If you’re unfamiliar with how things started and how they’ve developed, our own Russell Wolf has written an overview of how Kotlin Multiplatform Mobile has grown and changed. With his experiences using Kotlin, from working on one of the earliest KMM libraries to the development of tools to help onramp both individuals and teams, he’s a perfect guide for anyone who needs an overview of Kotlin Multiplatform Mobile’s history. Check out his 2022 edition of The Evolution of Kotlin Multiplatform Mobile.
The Early Adopter Phase: 2017-2021
As with any emerging technology there were challenges and missteps that early adopters had to overcome. Tricky project setup and an unusual memory management model (fixed now) were just some of the challenges that KMM overcame in the years since it was first announced. For a solid overview of the difficulties that early adopters faced, as well as how JetBrains, Touchlab, and the KMM community have worked to overcome them, check out “Overcoming KMM’s Early Adoption Blues,” by Engineering manager Sam Hill.
Because different people came to KMM in different ways and at different stages of readiness, Touchlab found it important to have tools in place to meet people where they are. Over the years, the team developed tooling with newcomers to multiplatform in mind.
Curious about the tools Touchlab has created to help teams adopting KMM?
- KaMPKit: Developed in partnership with JetBrains to make spinning up greenfield projects less overwhelming
- Xcode-Kotlin Plugin with CLI: Allows iOS developers to troubleshoot issues that originate in shared code
- Kermit KMP Logging: A simple-to-use logging API that focuses on performance
- KMMBridge: Our newest offering, developed for larger teams–we discuss it more below
Why Is Now The Time To Get Started?
It is perhaps understandable that many engineering leaders were wary of adopting Kotlin Multiplatform Mobile until it entered Beta. Of course, only writing your mobile application code once has been a goal of mobile developers for almost as long as mobile apps have been around. There have been a variety of attempts: hybrid approaches like PhoneGap and Ionic and more-native but not-native solutions like React Native, Xamarin, and Flutter.
The theme across all of these solutions is compromise. There is always something given up when sharing code in cross-platform solutions. It may be performance, user experience, or even dev familiarity.
Why Choose Kotlin Multiplatform Mobile?
KMM, like other solutions, has compromises when compared to fully native development. However, KMM reduces issues with performance and user experience by supporting straight forward interop with the native platform code. This allows a KMM project to delegate platform critical code and UI. It limits disruptions to the developer experience by working in a language and toolset already familiar to Android developers and by generating ObjC and Swift headers for iOS developers.
KMM reduces issues with performance and user experience by supporting straight forward interop with the native platform code.
Why Now, Instead Of Waiting For Stable?
KMM has evolved significantly since its release. The getting started process has been streamlined and it’s now an obvious choice for a greenfield application developer to start with shared KMM code. Issues or choices that may have given teams pause have been resolved and it has become significantly more approachable for large production teams. With the announcement of KMM Beta, teams can be confident with the stability and support of the tool. Additionally, Touchlab has introduced KMMBridge, allowing teams to successfully publish shared code faster than ever, as we explain in more detail below.
We have worked with large organizations who are already using KMM to share code not just across platforms, but across multiple brands and applications. We’ve seen healthcare applications use KMM to rapidly iterate in response to changing healthcare requirements. We have helped numerous other complex applications start sharing code and can confidently say that KMM is ready for your production app.
KMM Is Ready For Your Team
Touchlab is confident that KMM is ready for teams to integrate into both in-production and greenfield apps. We previously mentioned our KaMPKit, a tool that has been key for getting new projects and individual devs up to speed. It is perfect for one or two devs working on a greenfield app. But our team recognized that larger teams and brownfield projects needed similar tooling. As Beta approached, we developed KMMBridge to help teams in much the same way that KaMPKit helps individuals. Not sure how to decide whether your team should be using KMMBridge vs KaMPKit? We break down how to decide which option to go with in When Should I Use KMMBridge? In addition to reading through the initial announcement, you can also use our tutorial and template project, designed to get most teams started in under an hour. You can also find additional samples of using KMMBridge to help guide your journey.
Touchlab is confident that KMM is ready for teams to integrate into both in-production and greenfield apps.
KMM Adoption Successes
Even though it has only been in Beta since October, Touchlab has been successful in helping companies adopt Kotlin Multiplatform Mobile to meet their mobile development goals. In fact, projects such as KMMBridge are driven by our clients challenges and goals.
Here are three examples, all successfully in production, all using a version of our KMMBridge tooling.
One of the first successful implementations of a proto-KMMBridge process was with long-time partners on the #1 finance app’s team. In order to integrate Kotlin without significantly disrupting the dev process, we implemented a CI process to build, package, and deploy Xcode Frameworks.
Media and Entertainment:
When one of the world’s leading media and entertainment companies was choosing to implement KMM for their crucial organization-wide identity SDK project, they needed KMMBridge configured for their environment and situation. We found that uploading a shared framework into an AWS S3 bucket, then pulling it down from that bucket to consume from a UI library for iOS development saves a ton of time and headache.
A global leader in the hearing aid industry initially attempted to go “all-in” on a full KMM transformation and struggled where most teams initially do; implementing all the Android/Kotlin/Gradle tooling. We helped them get started with the current iteration of KMMBridge, and they were able to get to the efficiencies of using KMM without disrupting their iOS developers’ established workflow.
Are You Ready to Get Started?
KMM is on course to be stable in 2023. If you want to explore how KMM can work for your mobile dev team, try it out in a greenfield project, or integrate it into an existing app, Touchlab has the tools and expertise you need to be successful. You can join our community on the Kotlinlang Slack at #touchlab-tools, or if you’re ready to explore how Touchlab can help you adopt and scale KMM to meet both your development team’s needs and product goals, contact us here.