Because Kotlin multiplatform projects don't share both logic and UI across build targets, it becomes easier to integrate Kotlin multiplatform modules within an existing project. The shared code can simply be consumed as if it were any other dependency. It also means that a new Kotlin multiplatform application is still going to rely on familiar native tools and tech stacks in at least the UI layer.
All of these things together lead to lower the risk of adopting Kotlin multiplatform when compared to a more heavy-handed cross-platform approach such as React Native or Flutter. In a Kotlin multiplatform code base, if a shared component is not performant enough, it can't wrap a native API properly, or if it has any other issue, it can easily be swapped out for a native implementation with minimal impact. This is not always the case with other cross-platform approaches.
Because of an emphasis on shared logic and a low barrier to entry, Kotlin multiplatform is well positioned for existing applications that want to start sharing code but can't afford to migrate large portions of their code to a new tech stack, or want to minimize the number of new tools/languages required to share code.
In the next section, we'll walk through the setup of a new Kotlin multiplatform project to better understand how to share Kotlin code across multiple build targets.