# kmm

Published articles for kmm.

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

## KMM: What's Under the hood?

DevFeed: [KMM: What's Under the hood?](<https://devfeed.tech/articles/kmm-what-s-under-the-hood-24754.md>)

Original publisher: [Read original article](<https://medium.com/ymedialabs-innovation/kmm-whats-under-the-hood-1a26cb50ca67?source=rss----8b5620c36355---4>)

Author: Codeangi

Published: 2023-02-22T15:58:32Z

Content type: tutorial

Language: en

Sources: [ymedialabs-innovation - Medium](<https://devfeed.tech/sources/ymedialabs-innovation-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>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [compilation](<https://devfeed.tech/tags/compilation.md>), [development](<https://devfeed.tech/tags/development.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-beginners](<https://devfeed.tech/tags/kotlin-beginners.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

This article explains Kotlin Multiplatform Mobile (KMM), focusing on how developers can share business logic, data, and connectivity implementation between Android and iOS. It also describes Kotlin/Native compilation through LLVM and Kotlin/JS compilation to JavaScript.

### Source excerpt

source There have been many tools for cross-platform development before but offered so little in terms of sharable code, there was always an overhead of writing and maintaining applications in a set-predetermined technology such as Phonegap, ReactNative, and Flutter. Kotlin provides a huge leeway in writing sharable code, especially when you are developing Mobile applications for Android and iOS with similar features. In the real world, it translates into fewer lines of code, fewer bugs, less time, and of course lesser cost of development. Whether you are starting a new project or adding a new feature to an existing one. This article is an effort to interpret KMM in layman's terms, knowing programming helps but is not mandatory.Topics Include: What is KMM, How it works, the Good, and the Bad.source Kotlin is a cutting-edge yet established programming language that offers a range of benefits for developers. One of the key use cases for Kotlin is its ability to share code between mobile platforms through Kotlin Multiplatform Mobile (KMM). By using KMM, developers can create cross-platform mobile apps and share crucial elements like business logic, data, and connectivity implementation between Android and iOS. Kotlin-Native In order to use Kotlin code in iOS, the Kotlin code is first compiled to LLVM bytecode using the Kotlin/Native compiler. LLVM (Low Level Virtual Machine) is a collection of modular and reusable compiler and toolchain technologies. The LLVM bytecode is then compiled using the iOS toolchain and linked with the iOS runtime libraries. The resulting binary is an iOS application bundle (an .app directory) that contains the Kotlin code and the Swift runtime. When the app is run, the Swift runtime loads the Kotlin code and uses it as if it were native Swift code. Kotlin/JS Kotlin/JS provides the ability to trans-compile Kotlin code, the Kotlin standard library, and any compatible dependencies to JavaScript. The current implementation of Kotlin/JS targets ES

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

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

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

Published: 2023-02-09T19:05:50Z

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>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>)

Tags: [atom](<https://devfeed.tech/tags/atom.md>), [developer](<https://devfeed.tech/tags/developer.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [podcast](<https://devfeed.tech/tags/podcast.md>), [technology](<https://devfeed.tech/tags/technology.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>)

### AI overview

Episode 4 of the A Touch of Multiplatform podcast discusses Meetup's evaluation and production use of Kotlin Multiplatform. Colin Lee and Annyse Davis describe mob programming, empowering iOS engineers, observed benefits and challenges, and advice for adopting KMM.

### Source excerpt

Welcome to episode 4 of A Touch of Multiplatform (ATOM)! This is our podcast dedicated to Kotlin Multiplatform technology in production and produced for you by JetBrains and Touchlab. In this episode, we sit down to talk with Meetup's Colin Lee and Annyse Davis about how their teams evaluated multiplatform options before going all in with KMM. With them, we discuss how Meetup leveraged mob programming and empowering their iOS engineers to better understand the benefits and challenges of KMM.

## KMM: A Use case for common UI behavior

DevFeed: [KMM: A Use case for common UI behavior](<https://devfeed.tech/articles/kmm-a-use-case-for-common-ui-behavior-24716.md>)

Original publisher: [Read original article](<https://dev.to/touchlab/kmm-a-use-case-for-common-ui-behavior-2mi3>)

Author: Jigar Brahmbhatt

Published: 2023-01-30T20:03:37Z

Content type: tutorial

Language: en

Sources: [Touchlab](<https://devfeed.tech/sources/touchlab.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Code](<https://devfeed.tech/topics/code.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlinmultiplatform](<https://devfeed.tech/tags/kotlinmultiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [platforms](<https://devfeed.tech/tags/platforms.md>), [regex](<https://devfeed.tech/tags/regex.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [software](<https://devfeed.tech/tags/software.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ux](<https://devfeed.tech/tags/ux.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

The article describes implementing auto-formatting for a phone number field across Android, iOS, and ReactJS in a Kotlin Multiplatform SDK. After platform-specific implementations exposed repeated cursor-position edge cases, the authors refactored the string and cursor-position logic into common code.

### Source excerpt

This post demonstrates how we used common KMP code for a common UI feature across three platforms. Requirement Recently, we got a new feature requirement for the SDK we're developing using Kotlin Multiplatform (KMP). The SDK has a typical UI form with a variety of fields in it that the user fills out. One of the fields is a phone number field. The requirement was to auto-format the number as the user types it out. The end behavior would be like this, How we did it initially We usually divide KMP work based on UI stories for each platform and a task for any required work in the commonMain layer. For deeper dive into how we divide KMP work, checkout Kevin's post about it Following the same approach, first, we added a couple of utility methods in common code to format and unformat the phone number. commonMain fun formatPhoneNumber(number: String): String { // return formatted number using regex } fun unformatPhoneNumber(number: CharSequence): String { // return unformatted number using regex } Then we worked on individual platform UI implementation. Android We implemented a custom TextWatcher and handled the logic in beforeTextChanged and afterTextChanged methods. iOS On iOS, we used @objc func textFieldDidChange(_ sender: UITextField) to handle formatting while entering the number entering, and func textField() with the shouldChangeCharactersIn option to format the number when deleting. Web On ReactJS, we used onChange of the TextField to implement custom logic for formatting. What worked and what went wrong What worked was that each platform performed the same for the general use case of entering and deleting the number due to having common knowledge and JIRA tickets for them. What differed between each platform was how the individual developer approached edge cases around entering and deleting the input from a specific cursor position. For example, consider the input like this (123) 456-7890. Now user wants to remove the number 6 and manually sets the cursor positio

## 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.

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

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

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

Published: 2022-12-01T18:49:13Z

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>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apis](<https://devfeed.tech/tags/apis.md>), [atom](<https://devfeed.tech/tags/atom.md>), [code](<https://devfeed.tech/tags/code.md>), [code-sharing](<https://devfeed.tech/tags/code-sharing.md>), [community](<https://devfeed.tech/tags/community.md>), [developer](<https://devfeed.tech/tags/developer.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [podcast](<https://devfeed.tech/tags/podcast.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

Episode 2 of A Touch of Multiplatform discusses Kotlin Multiplatform development in production with Jake Wharton and Jesse Wilson from Cash App. The conversation covers their multiplatform work, KMM beta, shared APIs for iOS consumers, the KMM ecosystem, and related projects.

### Source excerpt

In this episode of A Touch of Multiplatform, we sit down to talk with Jake Wharton and Jesse Wilson from Cash App about "weird and ambitious multiplatform things."

## Samples of Using KMMBridge

DevFeed: [Samples of Using KMMBridge](<https://devfeed.tech/articles/samples-of-using-kmmbridge-24720.md>)

Original publisher: [Read original article](<https://dev.to/touchlab/samples-of-using-kmmbridge-4bha>)

Author: Michael Friend

Published: 2022-11-30T20:46:11Z

Content type: tutorial

Language: en

Sources: [Touchlab](<https://devfeed.tech/sources/touchlab.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [monorepo](<https://devfeed.tech/topics/monorepo.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [guide](<https://devfeed.tech/tags/guide.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [ios](<https://devfeed.tech/tags/ios.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [monorepo](<https://devfeed.tech/tags/monorepo.md>), [react](<https://devfeed.tech/tags/react.md>), [software](<https://devfeed.tech/tags/software.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [webdev](<https://devfeed.tech/tags/webdev.md>)

### AI overview

This sample demonstrates how to use Touchlab's KMMBridge Gradle plugin to publish a Kotlin Multiplatform SDK binary for iOS consumption. It describes a setup spanning Android and iOS applications, with separate repositories using CocoaPods or Swift Package Manager, and explains the project's shared module and publishing configuration.

### Source excerpt

What is KMM Bridge? KMMBridge is a Gradle plugin by Touchlab that aims to simplify the process of pushing a Kotlin Multiplatform SDK binary to a remote repo to allow iOS developers to use the shared SDK without installing the Kotlin toolchain or building the Kotlin code on every app build. What is this Sample? This sample project showcases our typical project setup for adding Kotlin Multiplatform Mobile code to existing separate Android and iOS apps using KMMBridge. We keep the Android app and the shared code in the same repo and keep the code to an absolute minimum with no dependencies so the project will build faster to speed things up when playing around with custom publish config. To see how to set up a project that keeps the Android app in a separate repo and uses a more realistic structure in shared code, check out the article Quickstart Guide to KMMBridge Sample Repos The basic KMMBridge sample is split into four repos rather than being a monorepo to emulate the trend we've seen from teams adopting KMM into existing apps by publishing a KMM library from one repo for iOS apps in other repos to consume. The four repos are: KMMBridgeSampleKotlin aka Kotlin Repo - This is the Kotlin repo with the shared SDK code as well as an Android app that uses it. KMMBridgeSampleCocoaPods aka CocoaPods Repo- a repo that pulls down the sdk with CocoaPods to use in an iOS app KMMBridgeSampleSpm aka SPM Repo - a repo that pulls down the sdk with Swift Package Manager to use in an iOS app PublicPodspecs aka Podspec Repo - A CocoaPods custom Podspec repo. When publishing for CocoaPods a podspec file will be pushed to this repo in a folder with the version number. See the CocoaPods section for more info on this. KMMBridgeSampleKotlin - The Kotlin Code This repo demonstrates the usual first step for a larger team that wants to try out Kotlin Multiplatform: putting new or existing Kotlin code in a shared module in your Android app repo. This repo also has a standard Android app modul

## Samples of Using KMMBridge - Michael Friend

DevFeed: [Samples of Using KMMBridge - Michael Friend](<https://devfeed.tech/articles/samples-of-using-kmmbridge-michael-friend-38312.md>)

Original publisher: [Read original article](<https://touchlab.co/samples-of-using-kmmbridge>)

Published: 2022-11-29T16:25:42Z

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>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [gradle-plugin](<https://devfeed.tech/topics/gradle-plugin.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [code-sharing](<https://devfeed.tech/tags/code-sharing.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [spm](<https://devfeed.tech/tags/spm.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>)

### AI overview

This sample project demonstrates how to add Kotlin Multiplatform code to existing Android and iOS apps using KMMBridge. It describes a setup split across four repositories, with SDK distribution through CocoaPods and Swift Package Manager.

### Source excerpt

As you explore how KMM can help your mobile dev team, we've put together more KMMBridge sample to help you evaluate this best-in-class tool.

## Quick Start with KMMBridge - 1 hour tutorial - Kevin Galligan

DevFeed: [Quick Start with KMMBridge - 1 hour tutorial - Kevin Galligan](<https://devfeed.tech/articles/quick-start-with-kmmbridge-1-hour-tutorial-kevin-galligan-38310.md>)

Original publisher: [Read original article](<https://touchlab.co/quick-start-with-kmmbridge-1-hour-tutorial>)

Published: 2022-10-24T23:13:36Z

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>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Development](<https://devfeed.tech/topics/development.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [built-by-touchlab](<https://devfeed.tech/tags/built-by-touchlab.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [quick-start](<https://devfeed.tech/tags/quick-start.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A tutorial for using Touchlab's KMMBridge Gradle tool to build and publish an Xcode Framework from Kotlin for integration into an Xcode project without compiling Kotlin locally. It focuses on basic Kotlin Multiplatform integration for teams using GitHub, CocoaPods or Swift Package Manager, and GitHub Actions.

### Source excerpt

Staying true to our goal of making it easier for teams to get the benefits of Kotlin Multiplatform more quickly, this tutorial will help many of you get a basic integration working in about an hour or less. The tooling available for KMM and KMP has been mostly focused around local dev, but as adoption continues to increase, tooling for teams needs to mature as well.

## Introducing KMMBridge For Teams - Kevin Galligan

DevFeed: [Introducing KMMBridge For Teams - Kevin Galligan](<https://devfeed.tech/articles/introducing-kmmbridge-for-teams-kevin-galligan-38224.md>)

Original publisher: [Read original article](<https://touchlab.co/introducing-kmmbridge-teams>)

Published: 2022-10-10T13:32:36Z

Content type: release

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>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [build-tools](<https://devfeed.tech/tags/build-tools.md>), [built-by-touchlab](<https://devfeed.tech/tags/built-by-touchlab.md>), [ci](<https://devfeed.tech/tags/ci.md>), [featured](<https://devfeed.tech/tags/featured.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [teams](<https://devfeed.tech/tags/teams.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

Touchlab announces KMMBridge, part of its Faktory tooling suite, to help mobile teams publish Kotlin Multiplatform code as internal SDKs for iOS. The article explains the Internal SDK Flow, in which a pre-built Kotlin Xcode Framework is published internally so iOS developers can consume it without building Kotlin locally.

### Source excerpt

With a Kotlin Multiplatform beta on the horizon, Touchlab is introducing KMMBridge, a tooling designed to get teams started with KMM.

## Overcoming KMM's Early Adopter Blues - Samuel Hill

DevFeed: [Overcoming KMM's Early Adopter Blues - Samuel Hill](<https://devfeed.tech/articles/overcoming-kmm-s-early-adopter-blues-samuel-hill-38307.md>)

Original publisher: [Read original article](<https://touchlab.co/overcoming-kmms-early-adopter-blues>)

Published: 2022-10-04T20:12:22Z

Content type: opinion

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>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Development](<https://devfeed.tech/topics/development.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [adoption](<https://devfeed.tech/tags/adoption.md>), [challenges](<https://devfeed.tech/tags/challenges.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [development](<https://devfeed.tech/tags/development.md>), [featured](<https://devfeed.tech/tags/featured.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [memory-management](<https://devfeed.tech/tags/memory-management.md>), [migration](<https://devfeed.tech/tags/migration.md>), [production](<https://devfeed.tech/tags/production.md>)

### AI overview

The article reviews challenges faced by early Kotlin Multiplatform Mobile adopters, including difficult project setup, library integration, and the legacy memory model. It describes Touchlab's KaMPKit and Stately efforts and notes JetBrains' subsequent project and memory-model improvements, before introducing challenges for larger production teams.

### Source excerpt

As we approach a Kotlin Multiplatform Mobile Beta, we take a look back at some of the challenges and missteps early KMM adoption had to overcome.

## When iOS Engineers Should Use Kotlin Multiplatform's expect/actual Syntax

DevFeed: [When iOS Engineers Should Use Kotlin Multiplatform's expect/actual Syntax](<https://devfeed.tech/articles/why-ios-engineers-should-avoid-this-glorified-kmm-technique-34119.md>)

Original publisher: [Read original article](<https://artandscienceofcoding.com/science/avoid-this-kmm-technique/>)

Author: Derek Lee

Published: 2022-09-22T00:00:00Z

Content type: opinion

Language: en

Sources: [art and science of coding](<https://devfeed.tech/sources/art-and-science-of-coding.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>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [guide](<https://devfeed.tech/tags/guide.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [science](<https://devfeed.tech/tags/science.md>)

### AI overview

This article argues that iOS engineers building multiplatform apps with Kotlin Multiplatform Mobile should generally write platform-dependent code in Swift instead of using the expect/actual syntax. It identifies building a multiplatform framework as the main case where the syntax may be worth considering and recommends consulting Apple's Objective-C documentation and Kotlin/Native headers when using it.

### Source excerpt

TL;DR If you're an iOS engineer who wants to build multiplatform apps using KMM, the few benefits of using the expect/actual syntax do not outweigh those of writing your platform-dependent code in Swift. The use-case for iOS engineers to consider leveraging expect/actual syntax would be when building a multiplatform framework. If you're going to use expect/actual, be sure to reference Apple's Objective-C documentation over Swift documentation and use the Kotlin/Native headers for the most accurate representation of the iOS APIs available in Kotlin. The expect/actual Syntax of Kotlin Multiplatform Mobile (KMM) The Kotlin Multiplatform SDK includes a syntactical construct integrated into JetBrains IDEs that engineers can use to define classes and functions that are expect -ed (pun intended) to have platform-specific implementations. The actual implementations are also written in Kotlin separately for Android and iOS. When looking at the code modules in a KMM project: within the KMM shared framework module, you first define a class or a function as expected. Then the actual implementations are written for each supported platform module. The following example illustrates what module the code is defined within for Android and iOS: The `common` module defines the expected classes and functions, and platform modules define the actual implementation. We looked at some simple examples in the last blog. These examples are helpful because they allow us to wrap our heads around the concept before diving into something more complicated. I want to take you on a journey of writing some code using this approach to illustrate how this can become more complicated in practice than expected. In fact, I'm going to make a bold statement and propose that there's only a single scenario where you, the iOS Engineer, should even consider using the expect/actual syntax. This post is part of a series on Kotlin Multiplatform: The iOS Engineer's Guide to Beginning Kotlin Multiplatform Development

## Android Worldwide: January 2022

DevFeed: [Android Worldwide: January 2022](<https://devfeed.tech/articles/android-worldwide-january-2022-28365.md>)

Original publisher: [Read original article](<https://siddroid.com/post/community/event-android-worldwide-january-2022/>)

Author: Siddhesh Patil

Published: 2022-01-26T18:32:16Z

Content type: article

Language: en

Sources: [Sid Patil - Android Engineer and Kotlin Advocate](<https://devfeed.tech/sources/sid-patil-android-engineer-and-kotlin-advocate.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Database](<https://devfeed.tech/topics/database.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [ana-zharkova](<https://devfeed.tech/tags/ana-zharkova.md>), [android](<https://devfeed.tech/tags/android.md>), [android-events-in-mumbai](<https://devfeed.tech/tags/android-events-in-mumbai.md>), [android-talks-2022](<https://devfeed.tech/tags/android-talks-2022.md>), [ash-davis](<https://devfeed.tech/tags/ash-davis.md>), [best-android-developer-communities](<https://devfeed.tech/tags/best-android-developer-communities.md>), [better-gradle-dependencies](<https://devfeed.tech/tags/better-gradle-dependencies.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [ed-george](<https://devfeed.tech/tags/ed-george.md>), [gabor-varadi](<https://devfeed.tech/tags/gabor-varadi.md>), [gde-talks](<https://devfeed.tech/tags/gde-talks.md>), [gdg-groups](<https://devfeed.tech/tags/gdg-groups.md>), [gema-rodriguez](<https://devfeed.tech/tags/gema-rodriguez.md>), [improving-gradle](<https://devfeed.tech/tags/improving-gradle.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-for-ios](<https://devfeed.tech/tags/kotlin-for-ios.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-mumbai](<https://devfeed.tech/tags/kotlin-mumbai.md>), [kotlin-user-groups](<https://devfeed.tech/tags/kotlin-user-groups.md>), [kshitij-chauhan](<https://devfeed.tech/tags/kshitij-chauhan.md>), [mohit-sarveiya](<https://devfeed.tech/tags/mohit-sarveiya.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [multithreading](<https://devfeed.tech/tags/multithreading.md>), [performance](<https://devfeed.tech/tags/performance.md>), [rashanjyot-arora](<https://devfeed.tech/tags/rashanjyot-arora.md>), [room](<https://devfeed.tech/tags/room.md>), [ryan-kay](<https://devfeed.tech/tags/ryan-kay.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [shared-flows-in-kotlin](<https://devfeed.tech/tags/shared-flows-in-kotlin.md>), [sierra-obryan](<https://devfeed.tech/tags/sierra-obryan.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [william-shelor](<https://devfeed.tech/tags/william-shelor.md>)

### AI overview

Android Worldwide announces its January 25-26, 2022 sessions, covering Kotlin Multiplatform memory management, SQLite and Room performance, and full-text search. The article also introduces the event speakers and participating communities.

### Source excerpt

We kickstart 2022 at Android Worldwide with a two days session on January 25th & 26th. This quarter we cover different topics ranging from managing memory at multiplatform level with Kotlin, maxing out the performance of your SQLite database, implementing FTS for faster database querying and much more!

## KMM Memory Model -- when to switch?

DevFeed: [KMM Memory Model -- when to switch?](<https://devfeed.tech/articles/kmm-memory-model-when-to-switch-25950.md>)

Original publisher: [Read original article](<https://medium.com/@kpgalligan/kmm-memory-model-when-to-switch-b1bc39867a75?source=rss-c2f810aa7890------2>)

Author: Kevin Galligan

Published: 2021-12-23T19:34:40Z

Content type: opinion

Language: en

Sources: [Stories by Kevin Galligan on Medium](<https://devfeed.tech/sources/stories-by-kevin-galligan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Library](<https://devfeed.tech/topics/library.md>), [Maintainers](<https://devfeed.tech/topics/maintainers.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [coroutines](<https://devfeed.tech/tags/coroutines.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-native](<https://devfeed.tech/tags/kotlin-native.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [releases](<https://devfeed.tech/tags/releases.md>)

### AI overview

The article discusses when developers should adopt Kotlin Multiplatform's new memory model. It reports that Touchlab plans to use the new model by default for development work, while native-mt releases are being phased out, and considers implications for libraries such as Stately, Atomic-FU, and Koin.

### Source excerpt

KMM Memory Model -- when to switch?Brain. It's a brain.Cross posted from https://touchlab.co/kmm-memory-model-when-to-switch/ Touchlab will be defaulting to the "new" memory model for anything that's in dev and/or not hitting production for a few months. That decision will be reviewed if there's some wild performance issue or bug, but otherwise, we're just doing it. On Slack, the team collectively decided to make the switch this afternoon. Why now? Well, the urgency this morning was largely driven by this. 1.6.x will be the last series of native-mt releases and we are effectively decommissioning native-mt in the favour of the new memory model that is supported out-of-the-box in 1.6.0 coroutines release....We encourage developers to try out and evaluate the new MM: that's our bet, we are investing our resources, development and testing in it and the quality of regular coroutine releases (including pre-release testing, a priority of the bug-fixes, extensive support of existing features and so on) is much higher than of native-mt builds. The general vibe is to wait until it's not "experimental", but if you've been working with KMP and Kotlin/Native for any length of time, you're probably used to "experimental". If you wait for something resembling "Beta", the rest of the community will probably have switched long before you did. Such is the life of an early adopter. Also, assuming the new model works "good enough", more people using it will speed up maturity through feedback. That's for client/app work. There are some decisions we (Touchlab), and other library maintainers, need to make around library decisions. Large portions of Stately, if not all of it, will probably be archived (discuss). However, we'll also need at least an OK implementation of concurrent collections. Next, while Atomic-FU covers a lot of what we'd want for concurrency primitives (atomics, locks, etc), we'll need a review to see if we want to completely switch over. Stately may continue on as a "simpl

## KMM Memory Model - when to switch? - Kevin Galligan

DevFeed: [KMM Memory Model - when to switch? - Kevin Galligan](<https://devfeed.tech/articles/kmm-memory-model-when-to-switch-kevin-galligan-38238.md>)

Original publisher: [Read original article](<https://touchlab.co/kmm-memory-model-when-to-switch>)

Published: 2021-12-22T18:52:04Z

Content type: opinion

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Library](<https://devfeed.tech/topics/library.md>), [Maintainers](<https://devfeed.tech/topics/maintainers.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [concurrency](<https://devfeed.tech/tags/concurrency.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-native](<https://devfeed.tech/tags/kotlin-native.md>), [library](<https://devfeed.tech/tags/library.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

Touchlab explains why it plans to adopt Kotlin/Native's new memory model for development work and encourages developers to evaluate it. The article discusses the end of native-mt releases, expected library changes, and testing needs.

### Source excerpt

Touchlab will be defaulting to the "new" memory model for anything that's in dev and/or not hitting production for a few months. That decision will be reviewed if there's some wild performance issue or bug, but otherwise, we're just doing it.

## KMM Oddity #2: Initialization order of top-level properties

DevFeed: [KMM Oddity #2: Initialization order of top-level properties](<https://devfeed.tech/articles/kmm-oddity-2-initialization-order-of-top-level-properties-24738.md>)

Original publisher: [Read original article](<https://medium.com/xorum-io/kmm-oddity-2-initialization-order-of-top-level-properties-edd11ec350a2?source=rss----92bb7980cc9f---4>)

Author: Yev Kanivets

Published: 2021-11-15T15:44:44Z

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>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Redux](<https://devfeed.tech/topics/redux.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [ios](<https://devfeed.tech/tags/ios.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-native](<https://devfeed.tech/tags/kotlin-native.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [redux](<https://devfeed.tech/tags/redux.md>)

### AI overview

This article examines an initialization-order oddity involving Kotlin top-level properties in Kotlin Multiplatform Mobile. It compares behavior when dependent properties are declared in one file or separate files, including differing initialization sequences in Android and iOS applications.

### Source excerpt

Kotlin Multiplatform goes Beta this Spring (2022), so it removes all major hassles (Memory Model and Kotlin/Native concurrency, for example) which KMP developers face. But even with the Stable version (hopefully by the end of 2022), we are going to have a certain number of minor issues or simply oddities while using this relatively young technology (especially with Kotlin/Native). Most of them are already reported in Kotlin's YouTrack, so go check it before stressing out. I've encountered many such issues myself for the past two years with Kotlin Multiplatform Mobile. In this series of articles, I'll share my favorite oddities of KMM with explanations and workarounds (if possible). Top-level properties In Kotlin, we are able to declare top-level (or global) variables, which are accessible from anywhere in the given module or even the whole application. For example, let's say that we have a data class Order: https://medium.com/media/a25461d8a0d6b9b56cb9dd912331f029/href This class has a name and an optional dependency to another Order. The init block is here to help us understand when it's initialized. While it's generally a bad idea to declare instances of such class as a global variable, we are going to do it twice in the same file for now. As you can see, orderB depends on orderA, so it must be initialized first. https://medium.com/media/b290af047e51b599b293e0aca4e01fee/href It's done for demo purposes here, but a real application can require it as well (think about store, reducers, and middleware from Redux architectural pattern, which are all global variables by default). When run, we see the expected order of initialization in logs of both, Android and iOS applications: Init orderA / Init orderB. Single-file initialization order When we have all connected top-level variables in the same file, things are simple. To check it, swap the orderA with orderB. https://medium.com/media/25fc0522be792d1cfa0da6cbd4ec7f90/href Do you see? Android Studio will complain about

## KMM Oddity #1: Interface methods with underscores

DevFeed: [KMM Oddity #1: Interface methods with underscores](<https://devfeed.tech/articles/kmm-oddity-1-interface-methods-with-underscores-24737.md>)

Original publisher: [Read original article](<https://medium.com/xorum-io/kmm-oddity-1-interface-methods-with-underscores-21523b8ed797?source=rss----92bb7980cc9f---4>)

Author: Yev Kanivets

Published: 2021-09-20T04:23:21Z

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>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [ios](<https://devfeed.tech/tags/ios.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-native](<https://devfeed.tech/tags/kotlin-native.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>)

### AI overview

This article examines a Kotlin Multiplatform Mobile interoperability oddity in iOS. It explains how the Kotlin/Native compiler can expose an interface method with an underscore suffix, such as eat(food_:), when similarly named methods from different interfaces may clash in Objective-C.

### Source excerpt

Kotlin Multiplatform attracts more and more developers every day. Especially after the technology transitioned to the Alpha stage. On its way to Beta, KMP removes all major hassles (Memory Model, for example). Nonetheless, you can still find "a few" more minor bugs and oddities reported in Kotlin's YouTrack. They aren't blockers for using KMP in your production application but may cost you several hours of wondering what and why is happening in your mobile application (mainly on iOS). I faced many such issues myself since I've started using Kotlin Multiplatform Mobile two years ago. In this series of articles, I'll share my favorite oddities of KMM with explanations and workarounds (if possible). Kotlin/Native Obj-C interop Shared KMM modules are written in Kotlin, hence can be used in Android native applications as it is. On iOS, it's more complicated because of Objective-C and Swift, which can't directly use Kotlin code. Kotlin/Native plugin compiles shared KMM modules to iOS frameworks, which contain binary and Obj-C header. You can find them in the build folder of the shared module, under bin/iOS/. Many concepts of Kotlin don't exist in Obj-C, so specific shortcuts and workarounds need to be applied to make it work. It is where some oddities start appearing. Interface methods naming clash Let's say we have two types of pets -- Dog and Cat, which we need to feed with some specific Food. In Kotlin, we could represent that with two interfaces, each having an internal (embedded) Food class. https://medium.com/media/b868e0383cdc20566aef171daa863a87/href It works perfectly well in Android, but on iOS Dog will have eat(food_:) method instead of eat(food:). Where does that underscore suffix come from? And why do we need it? It looks like Kotlin/Native compiler thinks there will be a clash between eat(food:) methods of Dog and Cat interfaces, so it's safer to make them different by implicitly adding an underscore to the 2nd one. I'm not sure it will become a problem and i

## 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.

## Kotlin 1.5.30 and KMM/KMP

DevFeed: [Kotlin 1.5.30 and KMM/KMP](<https://devfeed.tech/articles/kotlin-1-5-30-and-kmm-kmp-25951.md>)

Original publisher: [Read original article](<https://medium.com/@kpgalligan/kotlin-1-5-30-and-kmm-kmp-2ba19af65fe7?source=rss-c2f810aa7890------2>)

Author: Kevin Galligan

Published: 2021-08-27T16:15:39Z

Content type: article

Language: en

Sources: [Stories by Kevin Galligan on Medium](<https://devfeed.tech/sources/stories-by-kevin-galligan-on-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [releases](<https://devfeed.tech/topics/releases.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-native](<https://devfeed.tech/tags/kotlin-native.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

The article discusses Kotlin 1.5.30 as a significant milestone for Kotlin Multiplatform and Kotlin Multiplatform Mobile. It focuses on the preview of Kotlin/Native's new memory model, which is intended to simplify shared-state access across threads, while noting that it was not yet recommended for production and that important questions remained.

### Source excerpt

Kotlin 1.5.30 officially launched just now. There has been a steady stream of Kotlin releases over the last year or so, each with new features and fixes. In other words, business as usual. Since we (Touchlab) are plugging away, day in and out, working on client projects using KMM🐶, it can be easy to lose track of the bigger milestones. Kotlin 1.5.30 feels (numerically speaking) like just another point release, but this is a milestone advance for the platform. 1.5.30 presents a few big features, at least in preview, which will ultimately pave the way for "production ready" mainstream adoption of Kotlin shared code technology. Kotlin 1.5.30 is a turning point in KMP. Here's why.Memory Model Preview One of the most controversial aspects of Kotlin/Native is the concurrency and memory model. There are a lot of takes on it. Whether it was a good or bad thing, and why, is beyond the scope of today's post. However, I talked about it much more than anything else over the last few years because for KMM and KMP to grow, people would need to understand it. Still, it's been a significant blocker for some. That will be changing soon. I would not run the new memory model in production yet 🤞, but you can start experimenting with it now, and expect production deployments to pop up as we settle into 1.6 (I'm guessing :) 🚀. What is this memory model business you ask? Well, in some languages (Java, Swift, etc), multiple threads can read and write shared state. There are a number of ways in which that can be dangerous and error prone. Many languages don't let you access state from multiple threads (JS), some even have memory restriction rules built into the language and compiler (Rust). Kotlin/Native introduced a relatively unique model. In concept, it's interesting, but in practice, it can be confusing and a barrier to adoption. The new memory model will presumably allow unrestricted shared access to state. There are outstanding questions. Will there be equivalents to the JVM concurren

## 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. Всем, кому интересно, -- добро пожаловать под кат. Читать далее

## 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.

## 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 1.4 Online Event - Day 4 Recap (Kotlin for Server Side) - Touchlab

DevFeed: [Kotlin 1.4 Online Event - Day 4 Recap (Kotlin for Server Side) - Touchlab](<https://devfeed.tech/articles/kotlin-1-4-online-event-day-4-recap-kotlin-for-server-side-touchlab-38257.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-1-4-online-event-day-4-recap>)

Published: 2020-10-20T14:22:08Z

Content type: article

Language: en

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

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

Tags: [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>), [recap](<https://devfeed.tech/tags/recap.md>), [touchlabshare](<https://devfeed.tech/tags/touchlabshare.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

A video recap of Day 4 of the Kotlin 1.4 event, focused on Kotlin for server-side development. The Touchlab team also shares its enthusiasm for Kotlin Multiplatform Mobile and discusses its present and future.

### Source excerpt

The following video is a recap of Day 4 KMM announcements and development from the Kotlin 1.4 event. This video is intended for managers interested in KMM.

## Kotlin 1.4 Online Event - Day 2 Recap - Touchlab

DevFeed: [Kotlin 1.4 Online Event - Day 2 Recap - Touchlab](<https://devfeed.tech/articles/kotlin-1-4-online-event-day-2-recap-touchlab-38255.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-1-4-online-event-day-2-recap>)

Published: 2020-10-14T15:39:08Z

Content type: article

Language: en

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

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

Tags: [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [recap](<https://devfeed.tech/tags/recap.md>), [touchlabshare](<https://devfeed.tech/tags/touchlabshare.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

A video recap of Day 2 of the Kotlin 1.4 online event, covering libraries being developed by the JetBrains and Kotlin teams and their relevance to teams considering Kotlin Multiplatform Mobile.

### Source excerpt

The following video is a recap of Day 2 KMM announcements and development from the Kotlin 1.4 event. This video is intended for managers interested in KMM.

## Kotlin 1.4 Online Event - Day 1 Recap - Touchlab

DevFeed: [Kotlin 1.4 Online Event - Day 1 Recap - Touchlab](<https://devfeed.tech/articles/kotlin-1-4-online-event-day-1-recap-touchlab-38254.md>)

Original publisher: [Read original article](<https://touchlab.co/kotlin-1-4-event-day-1-recap>)

Published: 2020-10-13T00:11:29Z

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>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [adopting](<https://devfeed.tech/tags/adopting.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [event](<https://devfeed.tech/tags/event.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [recap](<https://devfeed.tech/tags/recap.md>), [touchlabshare](<https://devfeed.tech/tags/touchlabshare.md>)

### AI overview

A video recap of Day 1 of the Kotlin 1.4 online event, covering KMM announcements and development. It notes Kotlin 1.4's focus on quality and performance and targets engineering managers considering KMM adoption.

### Source excerpt

The following video is a recap of Day 1 KMM announcements and development from the Kotlin 1.4 event. This video is intended for managers interested in KMM.

[Next page](<https://devfeed.tech/tags/kmm.md?cursor=WyIyMDIwLTEwLTEzVDAwOjExOjI5KzAwOjAwIiwgIjNlZTczMWIzLThlOTktNDRmZi05MWNiLTE1ZDEzZWI4YzgyMSJd>)