Posted by Ben Trengrove – Developer Relations Engineer, Nick Butcher – Product Manager for Jetpack Compose
We are excited to announce that with the upcoming release of Kotlin 2.0, the Jetpack Compose compiler will move to the Kotlin repository. This means that a matching Compose compiler will release alongside each release of Kotlin. You will no longer have to wait for a matching Compose compiler release before upgrading the Kotlin version in your Compose app. The Compose team at Google will continue to be responsible for developing the compiler and will work closely with JetBrains, our co-founders of the Kotlin Foundation. The version of the Compose compiler now always matches the Kotlin version. The compiler version is therefore jumping to 2.0.0.
To simplify the set up of Compose, we are also releasing a new Compose Compiler Gradle plugin which lets you configure the Compose compiler with a type safe API. The Compose Compiler Gradle plugin’s versioning matches Kotlin’s, and it is available from Kotlin 2.0.0.
To migrate to the new plugin, add the Compose Compiler Gradle plugin dependency to the plugins section of your Gradle version catalog:
[versions]
kotlin = "2.0.0"
[plugins]
org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
// Add the Compose Compiler Gradle plugin, the version matches the Kotlin plugin
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
In your project’s root level Gradle file, add the plugin:
plugins {
// Existing plugins
alias(libs.plugins.compose.compiler) apply false
}
Then in modules that use Compose, apply the plugin:
plugins {
// Existing plugins
alias(libs.plugins.compose.compiler)
}
The kotlinCompilerExtensionVersion is no longer required to be configured in composeOptions and can be removed.
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
}
If required, you can now add a top level section to the same Gradle file to configure options for the Compose compiler.
android { ... }
composeCompiler {
enableStrongSkippingMode = true
}
You might currently directly referencing the Compose compiler in your build setup, rather than using AGP to apply the compose compiler plugin. If that is the case, note that the maven artifacts will also change:
Old |
New |
androidx.compose.compiler:compiler |
org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable |
androidx.compose.compiler:compiler-hosted |
org.jetbrains.kotlin:kotlin-compose-compiler-plugin |
For an example of this migration, see this pull request.
For more information on migrating to the new Compose compiler artifact, including instructions for non-version catalog setups, see our updated documentation.