# kotlin multiplatform mobile

Published articles for kotlin multiplatform mobile.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential

DevFeed: [Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential](<https://devfeed.tech/articles/why-businesses-choose-kotlin-multiplatform-mobile-native-ui-and-improvement-potential-23912.md>)

Original publisher: [Read original article](<https://medium.com/icerock/why-businesses-choose-kotlin-multiplatform-mobile-native-ui-and-improvement-potential-c9093455552b?source=rss----b74ae24564e---4>)

Author: IceRock Development

Published: 2023-04-28T03:13:53Z

Content type: article

Language: en

Sources: [IceRock Development - Medium](<https://devfeed.tech/sources/icerock-development-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [buisness](<https://devfeed.tech/tags/buisness.md>), [development](<https://devfeed.tech/tags/development.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [native](<https://devfeed.tech/tags/native.md>)

### AI overview

This case study describes how a team used Kotlin Multiplatform Mobile to build Moika-Moika, a car wash search app for Ucar with Android and iOS versions. The app combines map-based search, current car wash information, user-specific pricing, service selection, and in-app payment.

### Source excerpt

In most cases, entrepreneurs have an idea for what they would like an app to do, but are uncertain as to what technology would make it efficient, user-friendly and cost-effective. As experts in Kotlin Multiplatform Mobile, we will use this article to explore how this technology helped us create Moika-Moika ("Carwash-Carwash" in Russian) -- a car wash search app for the Ucar company, and how our client benefited from it. What the client wanted The app had been commissioned by Ucar, a car wash marketplace. Since we had had prior relationship with Ucar, the client was already familiar with our approach and came to us specifically looking to take advantage of our expertise in KMM with plans to create two versions of the app -- Android and iOS. The product was supposed to solve the problem of access to car washes -- the idea was to create something like Uber, but for car washes. At the same time, we needed to incorporate the client's backend with up-to-date information on car washes in the area, such as operation hours, prices and promotions, as well as to set up a feature for service selection aтв payment. The app was intended primarily for cab drivers, carsharing service providers, and commercial vehicle drivers. We also included a separate set of features for private car owners. How we made searching for car washes convenient The app helps car owners find the most suitable car wash on the map in terms of location, price and current promotions. For this we developed several features and provided access to up-to-date information. Moika-Moika shows car washes on the map with all the necessary information: working hours, prices, promotions, and free capacity status. The app chooses rates depending on whether the user is a taxi driver or a regular car owner. Users can pay for the services straight away in the app. This way, when they arrive at the car wash, the employees are already aware of which services they are supposed to provide and can identify the client's car by the

## Faster Development at a Lower Cost. Migration to Kotlin Multiplatform Mobile

DevFeed: [Faster Development at a Lower Cost. Migration to Kotlin Multiplatform Mobile](<https://devfeed.tech/articles/faster-development-at-a-lower-cost-migration-to-kotlin-multiplatform-mobile-23903.md>)

Original publisher: [Read original article](<https://medium.com/icerock/faster-development-at-a-lower-cost-migration-to-kotlin-multiplatform-mobile-4f27518b99a5?source=rss----b74ae24564e---4>)

Author: IceRock Development

Published: 2023-04-28T03:13:33Z

Content type: tutorial

Language: en

Sources: [IceRock Development - Medium](<https://devfeed.tech/sources/icerock-development-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Development](<https://devfeed.tech/topics/development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [App](<https://devfeed.tech/topics/app.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [app](<https://devfeed.tech/tags/app.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [code](<https://devfeed.tech/tags/code.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-app-development](<https://devfeed.tech/tags/ios-app-development.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

This article explains when and how to migrate existing Android and iOS applications to Kotlin Multiplatform Mobile. It outlines migration scenarios, potential budget and development-time benefits, and examples involving shared business logic.

### Source excerpt

Kotlin Multiplatform Mobile is a multiplatform tool that allows you to write universal code for iOS and Android, while saving up to a third of your budget and speeding up the development by 25%. But what if you already have a project, and you want to migrate to KMM? In this article we talk about what type of multiplatform migration costs $1300, $6000 and $40000. When should you integrate KMM? You can migrate to Kotlin Multiplatform Mobile both at the start of your development and at the implementation or launch stage. In order for the migration to make sense, one or more of the following conditions should apply: You already have an app for multiple platforms, Android and iOS, or you have just started developing such an app. Your app with Android and iOS versions has a complex business logic but a simple UI. For instance, it uses offline synchronization. You already have an Android app in Kotlin, but you urgently need an iOS version which utilizes your previous work. 60% of developers use or have tried Kotlin Multiplatform in production according to this recently published survey by JetBrains.What are the benefits of KMM integration? It can potentially save you up to a third of your budget. This is mainly because you develop a common code base for two platforms, Android and iOS, which can be done by a single developer. You can speed up your development by 25% and implement new features on both platforms faster and easier in the future. The projects will behave identically on these platforms without any discrepancies in minute details or complex cases. iOS and Android developers will share the context, which will allow them to understand each other's code in any part of the business logic and to promptly improve and fix it. These might be the reasons why over 75% of those who have played around with Kotlin Multiplatform are considering to use it for their production projects.How does KMM migration occur? The process of migrating to KMM depends on your current situatio

## Maximizing Mobile Code Reuse with Compose Multiplatform and MOKO Libraries

DevFeed: [Maximizing Mobile Code Reuse with Compose Multiplatform and MOKO Libraries](<https://devfeed.tech/articles/maximizing-mobile-code-reuse-with-compose-multiplatform-and-moko-libraries-23908.md>)

Original publisher: [Read original article](<https://medium.com/icerock/maximizing-mobile-code-reuse-with-compose-multiplatform-and-moko-libraries-140a408b452a?source=rss----b74ae24564e---4>)

Author: Aleksey Mikhailov

Published: 2023-04-13T06:46:01Z

Content type: tutorial

Language: en

Sources: [IceRock Development - Medium](<https://devfeed.tech/sources/icerock-development-medium.md>)

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Development](<https://devfeed.tech/topics/development.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Code](<https://devfeed.tech/topics/code.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [biometric-authentication](<https://devfeed.tech/tags/biometric-authentication.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [geolocation](<https://devfeed.tech/tags/geolocation.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-framework](<https://devfeed.tech/tags/ui-framework.md>)

### AI overview

This article explains how Compose Multiplatform can share Kotlin UI code across Android, iOS, Desktop, and experimental Web targets. It describes its declarative UI capabilities and limitations for non-UI mobile features, then presents MOKO Kotlin Multiplatform Mobile libraries as a way to address features such as permissions, geolocation, and biometric authentication.

### Source excerpt

Mobile application development can be a complex and time-consuming process, requiring developers to write separate code for each platform they want to target. To help streamline this process, JetBrains recently released Compose Multiplatform, a UI framework that allows developers to write UI for Android, iOS (Alpha), Desktop, Web (Experimental) in Kotlin common code. While Compose Multiplatform is a powerful tool for creating cross-platform user interfaces, it has some limitations when it comes to handling non-UI mobile features like permissions, geolocation, and biometric authentication. To address these limitations, developers can turn to the MOKO libraries, a set of Kotlin Multiplatform Mobile (KMM) libraries that are designed to work seamlessly with Compose Multiplatform. What Compose Multiplatform Allows You to Do Compose Multiplatform provides a powerful UI framework that enables developers to create consistent and responsive user interfaces across multiple platforms using Kotlin common code. This means that developers can write a single codebase that can be used to create UIs for both Android and iOS platforms. With Compose Multiplatform, developers can use a declarative approach to build UI components, making it easier to create complex UIs with less code. Compose Multiplatform also provides support for animations, theming, and custom layouts, making it a versatile and flexible tool for creating cross-platform UIs. Starts from Compose Multiplatform 1.4.0 all material ui that was developer for Android now available for iOS too. What Compose Multiplatform Does Not Do While Compose Multiplatform is a powerful tool for creating cross-platform user interfaces, it has some limitations when it comes to handling non-UI mobile features like permissions, geolocation, and biometric authentication. For example, Compose Multiplatform does not handle Android configuration changes. Additionally, Compose Multiplatform does not provide built-in support for requesting runtime

## Faster Development at a Lower Cost. Migration to Kotlin Multiplatform Mobile

DevFeed: [Faster Development at a Lower Cost. Migration to Kotlin Multiplatform Mobile](<https://devfeed.tech/articles/faster-development-at-a-lower-cost-migration-to-kotlin-multiplatform-mobile-24583.md>)

Original publisher: [Read original article](<https://medium.com/icerock/faster-development-at-a-lower-cost-migration-to-kotlin-multiplatform-mobile-4f27518b99a5?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2023-04-07T12:08:45Z

Content type: article

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Development](<https://devfeed.tech/topics/development.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [cost](<https://devfeed.tech/tags/cost.md>), [development](<https://devfeed.tech/tags/development.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-app-development](<https://devfeed.tech/tags/ios-app-development.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

This article explains when and how to migrate existing Android and iOS applications to Kotlin Multiplatform Mobile. It outlines migration scenarios and discusses potential budget savings, faster development, shared business logic, and platform consistency, while citing cost examples and survey findings.

### Source excerpt

Kotlin Multiplatform Mobile is a multiplatform tool that allows you to write universal code for iOS and Android, while saving up to a third of your budget and speeding up the development by 25%. But what if you already have a project, and you want to migrate to KMM? In this article we talk about what type of multiplatform migration costs $1300, $6000 and $40000. When should you integrate KMM? You can migrate to Kotlin Multiplatform Mobile both at the start of your development and at the implementation or launch stage. In order for the migration to make sense, one or more of the following conditions should apply: You already have an app for multiple platforms, Android and iOS, or you have just started developing such an app. Your app with Android and iOS versions has a complex business logic but a simple UI. For instance, it uses offline synchronization. You already have an Android app in Kotlin, but you urgently need an iOS version which utilizes your previous work. 60% of developers use or have tried Kotlin Multiplatform in production according to this recently published survey by JetBrains.What are the benefits of KMM integration? It can potentially save you up to a third of your budget. This is mainly because you develop a common code base for two platforms, Android and iOS, which can be done by a single developer. You can speed up your development by 25% and implement new features on both platforms faster and easier in the future. The projects will behave identically on these platforms without any discrepancies in minute details or complex cases. iOS and Android developers will share the context, which will allow them to understand each other's code in any part of the business logic and to promptly improve and fix it. These might be the reasons why over 75% of those who have played around with Kotlin Multiplatform are considering to use it for their production projects.How does KMM migration occur? The process of migrating to KMM depends on your current situatio

## Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential

DevFeed: [Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential](<https://devfeed.tech/articles/why-businesses-choose-kotlin-multiplatform-mobile-native-ui-and-improvement-potential-24590.md>)

Original publisher: [Read original article](<https://medium.com/icerock/why-businesses-choose-kotlin-multiplatform-mobile-native-ui-and-improvement-potential-c9093455552b?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2023-02-16T08:46:23Z

Content type: article

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [Development](<https://devfeed.tech/topics/development.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [backend](<https://devfeed.tech/tags/backend.md>), [buisness](<https://devfeed.tech/tags/buisness.md>), [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>)

### AI overview

This case study explains how Kotlin Multiplatform Mobile was used to build Moika-Moika, a car wash search app for Ucar with Android and iOS versions. The app integrates backend data about car washes, supports map-based search, user-specific rates, in-app payment, and multiple vehicles.

### Source excerpt

In most cases, entrepreneurs have an idea for what they would like an app to do, but are uncertain as to what technology would make it efficient, user-friendly and cost-effective. As experts in Kotlin Multiplatform Mobile, we will use this article to explore how this technology helped us create Moika-Moika ("Carwash-Carwash" in Russian) -- a car wash search app for the Ucar company, and how our client benefited from it. What the client wanted The app had been commissioned by Ucar, a car wash marketplace. Since we had had prior relationship with Ucar, the client was already familiar with our approach and came to us specifically looking to take advantage of our expertise in KMM with plans to create two versions of the app -- Android and iOS. The product was supposed to solve the problem of access to car washes -- the idea was to create something like Uber, but for car washes. At the same time, we needed to incorporate the client's backend with up-to-date information on car washes in the area, such as operation hours, prices and promotions, as well as to set up a feature for service selection aтв payment. The app was intended primarily for cab drivers, carsharing service providers, and commercial vehicle drivers. We also included a separate set of features for private car owners. How we made searching for car washes convenient The app helps car owners find the most suitable car wash on the map in terms of location, price and current promotions. For this we developed several features and provided access to up-to-date information. Moika-Moika shows car washes on the map with all the necessary information: working hours, prices, promotions, and free capacity status. The app chooses rates depending on whether the user is a taxi driver or a regular car owner. Users can pay for the services straight away in the app. This way, when they arrive at the car wash, the employees are already aware of which services they are supposed to provide and can identify the client's car by the

## When Should I Use KMMBridge? - Russell Wolf

DevFeed: [When Should I Use KMMBridge? - Russell Wolf](<https://devfeed.tech/articles/when-should-i-use-kmmbridge-russell-wolf-38348.md>)

Original publisher: [Read original article](<https://touchlab.co/when-should-i-use-kmmbridge>)

Published: 2023-01-10T08:00:00Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>)

### AI overview

This article explains when teams should use KMMBridge rather than KaMPKit for Kotlin Multiplatform projects. It focuses on teams with existing iOS applications, separate repositories, or developers who do not need to work directly with Kotlin, and describes consuming published Kotlin binaries through CocoaPods or Swift Package Manager.

### Source excerpt

Here is how to determine when to use KMMBridge vs KaMPKit for your multiplatform projects, depending on your team's needs.

## ATOM (A Touch of Multiplatform) Episode #3 - Touchlab

DevFeed: [ATOM (A Touch of Multiplatform) Episode #3 - Touchlab](<https://devfeed.tech/articles/atom-a-touch-of-multiplatform-episode-3-touchlab-38161.md>)

Original publisher: [Read original article](<https://touchlab.co/atom-a-touch-of-multiplatform-episode-3>)

Published: 2022-12-20T20:51:56Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [kotlin multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [atom](<https://devfeed.tech/tags/atom.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [twitter](<https://devfeed.tech/tags/twitter.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

Episode 3 of the ATOM podcast features Maxwell Anselm from Lutron discussing the company's evaluation, adoption, and scaling of Kotlin Multiplatform Mobile. The conversation covers team structure, learning from failure, iOS development, Swift and Objective-C interoperability, interfaces, CI/CD pipelines, Gradle, Xcode, Compose on iOS, the ecosystem, and the new memory model.

### Source excerpt

In this episode of ATOM, we sit down to talk with Lutron's Maxwell Anselm about going from being a KMM skeptic to a KMM convert.

## Kotlin Multiplatform Mobile Beta and Touchlab Adoption Tools

DevFeed: [Kotlin Multiplatform Mobile Beta and Touchlab Adoption Tools](<https://devfeed.tech/articles/kmm-beta-making-it-even-better-touchlab-38270.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-multiplatform-mobile-beta>)

Published: 2022-12-08T12:05:17Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [kotlin multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [beta](<https://devfeed.tech/tags/beta.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>)

### AI overview

The article discusses JetBrains' October 2022 announcement that Kotlin Multiplatform Mobile entered Beta and describes Touchlab tools intended to help developers and mobile teams adopt KMM.

### Source excerpt

Kotlin Multiplatform Mobile Beta was announced October 2022. We're highlighting how Touchlab has improved the developer experience.

## The Evolution of Kotlin Multiplatform Mobile - 2022 Edition - Russell Wolf

DevFeed: [The Evolution of Kotlin Multiplatform Mobile - 2022 Edition - Russell Wolf](<https://devfeed.tech/articles/the-evolution-of-kotlin-multiplatform-mobile-2022-edition-russell-wolf-38328.md>)

Original publisher: [Read original article](<https://touchlab.co/the-evolution-of-kotlin-multiplatform-mobile>)

Published: 2022-10-31T18:13:15Z

Content type: opinion

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [kotlin multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [Library](<https://devfeed.tech/topics/library.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [swift-package](<https://devfeed.tech/topics/swift-package.md>), [Maven Central](<https://devfeed.tech/topics/maven-central.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [maven-central](<https://devfeed.tech/tags/maven-central.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

This retrospective traces Kotlin Multiplatform Mobile from its early experimental stage, when Kotlin/Native memory management, Gradle configuration, and Xcode integration were difficult, to a more mature state with improved memory management, iOS integration through CocoaPods and Swift Package Manager, and better Kotlin-to-Swift interoperability. It also describes growth in the KMM library ecosystem, from about five published libraries in 2018 to more than 1,000 relevant artifacts on Maven Central.

### Source excerpt

Kotlin Multiplatform has come a long way in the last few years. As someone who was there when the KMP community first formed, I've seen the ecosystem grow from a few developers trying things out experimentally to a growing number of teams using it in their production apps. With the Kotlin Multiplatform Mobile Beta freshly announced, it's a neat moment to look back on how far everything has come. How It Started In the early days, KMP wasn't very easy for new users.

## I know Nothing in Kotlin

DevFeed: [I know Nothing in Kotlin](<https://devfeed.tech/articles/i-know-nothing-in-kotlin-23971.md>)

Original publisher: [Read original article](<https://medium.com/making-meetup/i-know-nothing-in-kotlin-392a85bcc3b4?source=rss----6981e268ba45---4>)

Author: Colin Lee

Published: 2022-09-16T15:32:41Z

Content type: tutorial

Language: en

Sources: [Making Meetup - Medium](<https://devfeed.tech/sources/making-meetup-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>)

Tags: [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dns](<https://devfeed.tech/tags/dns.md>), [exception](<https://devfeed.tech/tags/exception.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [network](<https://devfeed.tech/tags/network.md>), [nothing](<https://devfeed.tech/tags/nothing.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [swift](<https://devfeed.tech/tags/swift.md>), [timeout](<https://devfeed.tech/tags/timeout.md>)

### AI overview

This article explains Kotlin's Nothing type through a code-pairing example involving repository calls in a shared Kotlin Multiplatform Mobile module. It describes refactoring repeated exception handling, rethrowing CancellationExceptions for cooperative coroutine cancellation, and using Nothing for functions that always throw.

### Source excerpt

When the Greek philosopher Socrates professed that "I know only one thing -- that I know nothing," he wasn't exactly professing ignorance. It was an ancient formulation of the Dunning-Kruger effect. He had discovered that the more he learned, the wider the expanse of human knowledge seemed and the less that it seemed he knew. A fool, on the other hand, might believe that they're "not smart, but genius... and a very stable genius at that," and that they know "only the best words." In this sense, it's a good thing to know nothing. It's also true in Kotlin. During a recent code pairing session, I discovered that in Kotlin, there are numerous developers who have written code in the language for many years. And yet, they still don't know Nothing. Our pairing session became a big fuss about Nothing. We were working on some Repository code in our shared Kotlin Multiplatform Mobile (KMM) module of our Meetup for Organizers app. In this code, there was a repeated block at the end of every repository call to handle network, DNS, and timeout errors. We decided it would make sense to refactor this block into a function as we used it so often. The repeated block in question handled a catch block. It had to re-throw any CancellationExceptions to allow cooperative cancellation of coroutines. Then we had to wrap any other exception and re-throw it as a custom exception type so that we can easily tell iOS a complete list of all types we intend to throw in a @Throws declaration. This allows exception handling and avoids crashing when our functions are called by Swift code. In essence, this code block always threw an Exception. The pairing session became quite funny, like the Laurel and Hardy "Who's on First" comedy routine, but you could tell there was Nothing more frustrating, too. It went something like this: "Why am I getting this red text at the call site?" "The return type is incorrect because you always throw an exception. You need to return Nothing." "I already am returning nothi

## I Know Nothing in Kotlin

DevFeed: [I Know Nothing in Kotlin](<https://devfeed.tech/articles/i-know-nothing-in-kotlin-37554.md>)

Original publisher: [Read original article](<https://colintheshots.com/writing/i-know-nothing-in-kotlin/>)

Published: 2022-08-30T17:52:35Z

Content type: tutorial

Language: en

Sources: [Colin The Shots](<https://devfeed.tech/sources/colin-the-shots.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [kotlin multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>)

Tags: [coroutines](<https://devfeed.tech/tags/coroutines.md>), [exception-handling](<https://devfeed.tech/tags/exception-handling.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [refactor](<https://devfeed.tech/tags/refactor.md>)

### AI overview

This developer article explains Kotlin's Nothing type through a refactoring example involving exception handling in a shared Kotlin Multiplatform Mobile repository. It distinguishes Nothing from Unit and describes using it when a function always throws, including when interoperating with Swift code and preserving coroutine cancellation.

### Source excerpt

When the Greek philosopher Socrates professed that "I know only one thing-- that I know nothing," he wasn't exactly professing ignorance. It was an ancient formulation of the Dunning-Kruger effect.

## Understanding and Configuring your Kotlin Multiplatform Mobile Test Suite - Gustavo Fão Valvassori

DevFeed: [Understanding and Configuring your Kotlin Multiplatform Mobile Test Suite - Gustavo Fão Valvassori](<https://devfeed.tech/articles/understanding-and-configuring-your-kotlin-multiplatform-mobile-test-suite-gustavo-fao-valvassori-38342.md>)

Original publisher: [Read original article](<https://touchlab.co/understanding-and-configuring-your-kmm-test-suite>)

Published: 2022-01-11T21:22:39Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [unit test](<https://devfeed.tech/topics/unit-test.md>), [unit tests](<https://devfeed.tech/topics/unit-tests.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [tests](<https://devfeed.tech/tags/tests.md>), [verify](<https://devfeed.tech/tags/verify.md>)

### AI overview

This tutorial explains how to configure the test suite in a Kotlin Multiplatform Mobile project. It distinguishes Android unit and instrumented tests, describes the corresponding source sets, and contrasts them with testing on iOS, where both types run in the same target by default.

### Source excerpt

Writing tests is part of every developer's day-to-day routine. They help you write better and more reliable code. In addition, they can verify that your code does what it was supposed to do, and your changes haven't introduced bugs. In this article, I'll show you how to configure the test suite from your KMM project.

## The Evolution of Kotlin Multiplatform Mobile - 2022 Edition (OLD) - Russell Wolf

DevFeed: [The Evolution of Kotlin Multiplatform Mobile - 2022 Edition (OLD) - Russell Wolf](<https://devfeed.tech/articles/the-evolution-of-kotlin-multiplatform-mobile-2022-edition-old-russell-wolf-38201.md>)

Original publisher: [Read original article](<https://touchlab.co/evolution-kotlin-multiplatform-mobile-old>)

Published: 2021-11-01T15:31:26Z

Content type: opinion

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [kotlin multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Library](<https://devfeed.tech/topics/library.md>), [Maven Central](<https://devfeed.tech/topics/maven-central.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>)

Tags: [evolution](<https://devfeed.tech/tags/evolution.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [maven-central](<https://devfeed.tech/tags/maven-central.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

Russell Wolf reviews the evolution of Kotlin Multiplatform Mobile from its early experimental period to broader production use. The article describes improvements in Kotlin/Native memory management, Xcode integration, dependency distribution, Swift interoperability, and the growth of the KMM library ecosystem.

### Source excerpt

Touchlab's Russell Wolf looks at how the evolution of KMM has been playing out since the first introduction of Kotlin Multiplatform to today

## Kotlin Multiplatform Mobile Standardizes Cox Automotive Mobile App Analytics - Touchlab

DevFeed: [Kotlin Multiplatform Mobile Standardizes Cox Automotive Mobile App Analytics - Touchlab](<https://devfeed.tech/articles/kotlin-multiplatform-mobile-standardizes-cox-automotive-mobile-app-analytics-touchlab-38276.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-multiplatform-mobile-standardizes-cox-automotive-mobile-app-analytics>)

Published: 2021-09-13T02:20:41Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [ci](<https://devfeed.tech/topics/ci.md>)

Tags: [analytics](<https://devfeed.tech/tags/analytics.md>), [ci](<https://devfeed.tech/tags/ci.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [engineering-manager](<https://devfeed.tech/tags/engineering-manager.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [manager](<https://devfeed.tech/tags/manager.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [team-lead](<https://devfeed.tech/tags/team-lead.md>), [touchlabshare](<https://devfeed.tech/tags/touchlabshare.md>)

### AI overview

A Touchlab discussion with Cox Automotive engineering leaders Robert Szabo and Turker Nessa Kucuk about using Kotlin Multiplatform Mobile to standardize analytics in the Provision mobile app, including their production experience and CI/CD priorities.

### Source excerpt

We're joined by Robert Szabo and Turker Nessa Kucuk from Cox Automotive to discuss Kotlin Multiplatform Mobile for analytics.

## Kotlin Multiplatform Mobile (KMM/KMP) and Kotlin 1.5.30 - Kevin Galligan

DevFeed: [Kotlin Multiplatform Mobile (KMM/KMP) and Kotlin 1.5.30 - Kevin Galligan](<https://devfeed.tech/articles/kotlin-multiplatform-mobile-kmm-kmp-and-kotlin-1-5-30-kevin-galligan-38274.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-multiplatform-mobile-kotlin-1-5-30>)

Published: 2021-09-13T02:07:53Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [kotlin multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

The article examines Kotlin 1.5.30 as a milestone for Kotlin Multiplatform and Kotlin Multiplatform Mobile. It focuses on the preview of a new Kotlin/Native memory model, its implications for shared state and concurrency, and the remaining uncertainty before production adoption.

### Source excerpt

1.5.30 presents a few big features, which will ultimately pave the way for "production ready" mainstream adoption of Kotlin shared code technology.

## AppCode 2021.2: улучшения поддержки Swift, автодополнение выражений, окно иерархии вызовов для Swift и не только

DevFeed: [AppCode 2021.2: улучшения поддержки Swift, автодополнение выражений, окно иерархии вызовов для Swift и не только](<https://devfeed.tech/articles/appcode-2021-2-swift-swift-23930.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/573126/>)

Author: yeswolf (JetBrains)

Published: 2021-08-16T09:53:35Z

Content type: release

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [async/await](<https://devfeed.tech/topics/async-await.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [appcode](<https://devfeed.tech/tags/appcode.md>), [async](<https://devfeed.tech/tags/async.md>), [await](<https://devfeed.tech/tags/await.md>), [call-hierarchy](<https://devfeed.tech/tags/call-hierarchy.md>), [complete-statement](<https://devfeed.tech/tags/complete-statement.md>), [ide](<https://devfeed.tech/tags/ide.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [local-history](<https://devfeed.tech/tags/local-history.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>)

### AI overview

This release article describes AppCode 2021.2 improvements, including support for Swift features such as result builders, enum Codable synthesis, and async/await. It also covers documentation completion, Call Hierarchy, Swift Package Manager build and debugging support, a Kotlin Multiplatform Mobile plugin, a debugger Preview Tab, and Local History search.

### Source excerpt

Привет, Хабр! В этом посте, как и всегда, расскажем о новом релизе AppCode. Всем, кому интересно, -- добро пожаловать под кат. Читать далее

## Simple string localization in Kotlin Multiplatform

DevFeed: [Simple string localization in Kotlin Multiplatform](<https://devfeed.tech/articles/simple-string-localization-in-kotlin-multiplatform-24740.md>)

Original publisher: [Read original article](<https://medium.com/xorum-io/simple-string-localization-in-kmm-beaffc5e7a17?source=rss----92bb7980cc9f---4>)

Author: Yev Kanivets

Published: 2021-08-14T16:30:03Z

Content type: tutorial

Language: en

Sources: [xorum.io - Medium](<https://devfeed.tech/sources/xorum-io-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Localization (l10n)](<https://devfeed.tech/topics/localization.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [article](<https://devfeed.tech/tags/article.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>)

### AI overview

This tutorial explains how to access localized strings from Kotlin Multiplatform Mobile shared code while retaining native string localization on Android and iOS. It outlines the platforms' differing localization mechanisms and presents an approach for retrieving localized, formatted, and plural strings from shared code.

### Source excerpt

Kotlin Multiplatform Mobile gives us a lot of freedom on what to share and how to share between native mobile applications. Usually, it's just the shared business logic, and no user-facing things live in the common KMM module. But sometimes we need more ... This article will describe a simple (no 3rd party needed) way to access and use localized strings from the KMM module. This approach is based on the native string localization provided by Android and iOS applications, so no changes to strings management are needed from your side. Native localization iOS and Android have similar approaches to the localization of strings with some major differences in details. Let's do a quick recap to get context before diving into the KMM stuff. On both operating systems, we have all localizable strings extracted to files (one per language) in the form of key-value lists. Once the application is run on the user's device, the operating system detects the closest language file and uses it to render your app's UI. Rather straightforward. The main difference can be seen when it comes to using those strings in the code though. https://medium.com/media/cc9c336339f06c04a4b01f98ad707e2c/href On Android, you have a generated R class, which contains all string keys, accessible during the compilation, so you have an auto-completion and compile-time check for the existence of all strings you are trying to use. https://medium.com/media/fb7cfa6d362cd3fd353fa29bd35a64e1/href On iOS, you pass the string key to NSLocalizedString, which is resolved and localized during the runtime, so you don't have the auto-completion and compile-time check. String key is used as the default value. KMM localization To me, strings are one of the most user-facing parts of mobile applications, so I'm not sure that we should share it or have just one strings file in a KMM module. My take on it is that we should leave the power of strings to native platforms and developers. Even though, we still may need to access those

## How to implement Swift-friendly API with Kotlin Multiplatform Mobile

DevFeed: [How to implement Swift-friendly API with Kotlin Multiplatform Mobile](<https://devfeed.tech/articles/how-to-implement-swift-friendly-api-with-kotlin-multiplatform-mobile-23904.md>)

Original publisher: [Read original article](<https://medium.com/icerock/how-to-implement-swift-friendly-api-with-kotlin-multiplatform-mobile-e68521a63b6d?source=rss----b74ae24564e---4>)

Author: Aleksey Mikhailov

Published: 2021-08-07T16:49:33Z

Content type: tutorial

Language: en

Sources: [IceRock Development - Medium](<https://devfeed.tech/sources/icerock-development-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [enum](<https://devfeed.tech/topics/enum.md>), [Code](<https://devfeed.tech/topics/code.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [enum](<https://devfeed.tech/tags/enum.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [sealed-interface](<https://devfeed.tech/tags/sealed-interface.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This tutorial explains how Kotlin Multiplatform Mobile exposes Kotlin APIs to Swift through generated Objective-C APIs. It demonstrates usability issues with sealed interfaces at the Kotlin-Swift boundary and introduces IceRock's MOKO KSwift Gradle plugin, which analyzes Kotlin/Native library metadata to generate a more convenient Swift API.

### Source excerpt

Kotlin Multiplatform Mobile allows you to compile Kotlin code into native libraries for Android and iOS. If in the case of Android the library obtained from Kotlin will be integrated with an application written in Kotlin, then for iOS the integration will be with Swift. There is a loss of usability at the junction of Kotlin and Swift, due to the difference in languages. This is mainly because the Kotlin/Native compiler (which compiles Kotlin in the iOS framework and is part of the Kotlin Multiplatform) generates the public API of the framework in ObjectiveC. We access Kotlin from Swift through this generated ObjectiveC API, since Swift interacts with ObjectiveC. Further, I will show examples of API waste at the Kotlin-Swift junction and a tool that allows you to get a more convenient API for usage from Swift. Let's look at the example of using a sealed interface in Kotlin: sealed interface UIState<out T> { object Loading : UIState<Nothing> object Empty : UIState<Nothing> data class Data<T>(val value: T) : UIState<T> data class Error(val throwable: Throwable) : UIState<Nothing> } This is a convenient construct to describe states, which is actively used in the Kotlin code. Let's see how it looks from the Swift side. public protocol UIState { }public class UIStateLoading : KotlinBase, UIState { }public class UIStateEmpty : KotlinBase, UIState { }public class UIStateData<T> : KotlinBase, UIState where T : AnyObject { open var value: T? { get } }public class UIStateError : KotlinBase, UIState { open var throwable: KotlinThrowable { get } } From the Swift side Kotlin's sealed interface looks like a set of classes with a common protocol. Of course, in this case, one cannot hope to check the completeness of the switch implementation, since it is not an enum. For developers familiar with Swift, the enum is considered a more correct analog of the sealed interface, for example: enum UIState<T> { case loading case empty case data(T) case error(Error) } We can write such an enum

## We asked an iOS developer his thoughts after working with Kotlin/Multiplatform Mobile

DevFeed: [We asked an iOS developer his thoughts after working with Kotlin/Multiplatform Mobile](<https://devfeed.tech/articles/we-asked-an-ios-developer-his-thoughts-after-working-with-kotlin-multiplatform-mobile-22867.md>)

Original publisher: [Read original article](<https://medium.com/kodein-koders/we-asked-an-ios-developer-his-thoughts-after-working-with-kotlin-multiplatform-mobile-b08b8750be33?source=rss----f311f45ef54---4>)

Author: Salomon BRYS

Published: 2021-05-13T14:30:18Z

Content type: opinion

Language: en

Sources: [Kodein Koders - Medium](<https://devfeed.tech/sources/kodein-koders-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [developer](<https://devfeed.tech/tags/developer.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>)

### AI overview

An iOS developer reflects on working with Kotlin Multiplatform Mobile while contributing to the Phoenix Bitcoin Lightning Wallet for iOS and Android. The article presents KMM as a way to share business logic while retaining native user interfaces.

### Source excerpt

Photo by Mihai Moisa At Kodein Koders, we think that Kotlin Multiplatform Mobile will only rise with the help and support of iOS developers. As KMM only abstracts application backends, we need to have both platform communities on board to create great products. We were fortunate enough to work for several months with Robbie Hanson, a notorious iOS developer, on the new Phoenix Bitcoin Lightning Wallet KMM application for iOS and Android. We asked him to give us his feedback about the state of Kotlin/Multiplatform Mobile, and how it felt working with it. With his gracious permission, here goes: For mobile developers, the dream has always been to have a modern language for sharing code between iOS & Android. But for the last decade, the dream has remained just that. The available options were lacking. There's C++. I've been down that road before. When I worked with Verizon. It sucked. Hard. I wouldn't wish it on my enemies. And then there are the "let's just use a web framework" solutions. Which is a clearly a good idea -- to those who have never written a native mobile app in their life. Do you remember those horrible cross-platform Java apps from the 2000's (with user interfaces made with Swing) ? It's like that. Except now replace your user base with people who have never heard of AOL, and who grew up using the latest smartphones. Don't expect them to be kind to your crappy UI, and your non-existent animations. I was at WWDC when Apple announced Swift. And I remember hearing the other devs wax poetic about how "Swift is the new cross-platform language because it's open source. We will be able to write Android apps in Swift !!!" But I was skeptical. Why would Apple want to help you make apps for Android ? It goes against their business model. Well... Swift has been out for many years now. Does Apple provide Android support for Swift? Nope. Do they provide Windows support for Swift? Nope. What they support is server-side Swift. Because that's a completely different mark

## Kotlin Multiplatform Mobile Integration & Implementation at Volley | #TouchlabShare - Touchlab

DevFeed: [Kotlin Multiplatform Mobile Integration & Implementation at Volley | #TouchlabShare - Touchlab](<https://devfeed.tech/articles/kotlin-multiplatform-mobile-integration-implementation-at-volley-touchlabshare-touchlab-38272.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-multiplatform-mobile-integration-implementation-volley-touchlabshare>)

Published: 2021-05-10T01:51:01Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile-engineering](<https://devfeed.tech/tags/mobile-engineering.md>), [touchlabshare](<https://devfeed.tech/tags/touchlabshare.md>)

### AI overview

A TouchlabShare episode discusses how Volley implemented and integrated Kotlin Multiplatform Mobile, including its use case, technical makeup, complex areas, threading model, and future plans.

### Source excerpt

In this episode of #TouchlabShare we speak to Aaron Sarazan and Josh Shin about implementing and integrating KMM at Volley, voice-controlled entertainment company.

## Testing a Shared KMM Repo Locally

DevFeed: [Testing a Shared KMM Repo Locally](<https://devfeed.tech/articles/testing-a-shared-kmm-repo-locally-25526.md>)

Original publisher: [Read original article](<https://aleckazakova.com/posts/local-kmm/>)

Author: Author

Published: 2021-05-04T01:37:14Z

Content type: tutorial

Language: en

Sources: [Posts on AlecStrong](<https://devfeed.tech/sources/posts-on-alecstrong.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A tutorial on developing Kotlin Multiplatform Mobile code locally when shared code is maintained in a separate repository. It describes using Gradle composite builds for Android and CocoaPods local development for iOS instead of published artifacts.

### Source excerpt

There's a lot of different ways of organizing your Kotlin Multiplatform Mobile codebase, Ben Asher and I gave an overview of some of those at KotlinConf 2019, where I described a setup where the shared code lives in your iOS and Android codebase and is copied between them. The pro of this was an easy local development setup, but there are a lot of cons. We moved away from this style to a separate (third) repository for the multiplatform code last year.

## Targeting Android in a Kotlin/Multiplatform Mobile library

DevFeed: [Targeting Android in a Kotlin/Multiplatform Mobile library](<https://devfeed.tech/articles/targeting-android-in-a-kotlin-multiplatform-mobile-library-22866.md>)

Original publisher: [Read original article](<https://medium.com/kodein-koders/targeting-android-in-a-kotlin-multiplatform-mobile-library-b6ab75469287?source=rss----f311f45ef54---4>)

Author: Salomon BRYS

Published: 2021-04-26T14:32:30Z

Content type: tutorial

Language: en

Sources: [Kodein Koders - Medium](<https://devfeed.tech/sources/kodein-koders-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Android](<https://devfeed.tech/topics/android.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android Library](<https://devfeed.tech/topics/android-library.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Library](<https://devfeed.tech/topics/library.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [build](<https://devfeed.tech/tags/build.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [library](<https://devfeed.tech/tags/library.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [plugin](<https://devfeed.tech/tags/plugin.md>)

### AI overview

This tutorial explains how to target Android APIs from a Kotlin Multiplatform Mobile library. It advises developers to distinguish Android APIs from JVM APIs, then outlines an official approach using the Android Gradle plugin and Kotlin's Android target, as well as a lighter but more restrictive alternative. The official approach publishes an AAR instead of a JAR and supports Android resources such as images, XML files, and JNI native libraries.

### Source excerpt

https://medium.com/media/6c54678f49c79a047a73b582f72c478e/href So far, we've seen how to create a Kotlin/Multiplatform Mobile library, how to access iOS Swift APIs in it, and how to push it to Maven Central. We haven't discussed how to access Android APIs. Kotlin is the main Android programming language, so how difficult can it be ? Well, it turns out that the Android platform is not as simple as the JVM, so there are multiple strategies you can use to access Android APIs in your KMM libraries. Let's discuss them! First and foremost, you need to make sure that you actually need an Android API, and not a JVM API. You should not have your library target Android if the API you want to access is actually provided by the JVM. Most of the file access, date time, cryptography, and many more APIs are JVM APIs, and even if your library is supposed to be used especially on mobile targets, it is way simpler to target the JVM rather than adding the entire Android toolchain to your build. OK, so you're positive you need Android APIs? The way I see it, there are two ways you can add the Android APIs to the classpath of your library: There's the official way, which enables all Android capabilities to your library. There's the lighter way, a hack, really, which is more restrictive, but a lot simpler, which we'll discuss at the end of this video. The official way consists in adding the Android Gradle plugin to your build, as well as its corresponding Kotlin target & Android configuration. https://medium.com/media/b40d2cd887b34d8002fb3861463fd19b/href Adding the com.android.library plugins and defining an Android target, rather than a regular JVM target, has a notable effect: what will be published is an AAR (for Android ARchive) rather than a JAR (for Jvm ARchive). This means that the library can package Android resources, such as images, XMLs, or JNI native libraries. As you can see, most of the Android configuration is not happening in the kotlin block, but in the android block. T

## Replacing React Native with Kotlin Multiplatform at Wantedly | #TouchlabShare - Touchlab

DevFeed: [Replacing React Native with Kotlin Multiplatform at Wantedly | #TouchlabShare - Touchlab](<https://devfeed.tech/articles/replacing-react-native-with-kotlin-multiplatform-at-wantedly-touchlabshare-touchlab-38324.md>)

Original publisher: [Read original article](<https://touchlab.co/switching-react-native-kotlin-multiplatform-wantedly>)

Published: 2021-03-16T03:54:20Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [React Native](<https://devfeed.tech/topics/react-native.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [development](<https://devfeed.tech/tags/development.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [native](<https://devfeed.tech/tags/native.md>), [production](<https://devfeed.tech/tags/production.md>), [react](<https://devfeed.tech/tags/react.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [resources](<https://devfeed.tech/tags/resources.md>), [team](<https://devfeed.tech/tags/team.md>), [teams](<https://devfeed.tech/tags/teams.md>), [touchlabshare](<https://devfeed.tech/tags/touchlabshare.md>)

### AI overview

An interview with Wantedly engineer Malvin Sutanto explains why the mobile team moved from React Native to Kotlin Multiplatform Mobile. It covers the team's decision factors, architecture, implementation experience, use of Touchlab's KaMP Kit resources, production adoption, and recommendations for teams considering KMP.

### Source excerpt

We discussed why the Wantedly mobile team originally explored cross-platform mobile development and why they switched to Kotlin Multiplatform Mobile (KMM).

## Kotlin Multiplatform Mobile: Building a Business Case for KMP - Touchlab

DevFeed: [Kotlin Multiplatform Mobile: Building a Business Case for KMP - Touchlab](<https://devfeed.tech/articles/kotlin-multiplatform-mobile-building-a-business-case-for-kmp-touchlab-38170.md>)

Original publisher: [Read original article](<https://touchlab.co/building-business-case-kotlin-multiplatform>)

Published: 2020-10-22T21:23:39Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [kotlin multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [code-sharing](<https://devfeed.tech/tags/code-sharing.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [touchlabshare](<https://devfeed.tech/tags/touchlabshare.md>)

### AI overview

A TouchlabShare episode discusses how developers can communicate the business impact of sharing mobile code with Kotlin Multiplatform Mobile. Touchlab representatives also discuss lessons learned and approaches for building a business case.

### Source excerpt

Touchlab partner Jeff & business development lead Carmichael discuss approaches for devs to communicate the business impact of KMM code sharing.

[Next page](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md?cursor=WyIyMDIwLTEwLTIyVDIxOjIzOjM5KzAwOjAwIiwgImY4ODk4MTM0LTdmMTItNDQ5Ni04MWYzLTQzOGI2YmMyMDEzZSJd>)