JetBrains is updating the default project structure for Kotlin Multiplatform (KMP) projects. The old single composeApp module — which mixed shared library code with platform-specific application entry points — is being replaced by a clearer separation: a shared module for multiplatform library code and individual platform modules (androidApp, desktopApp, webApp) for each runnable application. The change is driven by Android Gradle Plugin 9.0 requirements, inconsistencies in the old structure (especially around iOS), and a desire for consistent module responsibilities. Configurations with native UI get sharedLogic and sharedUI modules, while server-inclusive projects gain a server module and a core module for shared code. The new structure is already live in the KMP wizard in IntelliJ IDEA and Android Studio. Existing projects are not required to migrate, but AGP 9.0 changes are mandatory for Android targets.

6m read timeFrom blog.jetbrains.com
Post cover image
Table of contents
What’s changingWhy we’re making changesGoals of the new structureAdapting to other configurationsUpdating existing projectsGet started with KMP today
1.6K Impressions