Skip to content

Latest commit

 

History

History
110 lines (85 loc) · 7.63 KB

compose-compatibility-and-versioning.md

File metadata and controls

110 lines (85 loc) · 7.63 KB

Compose Multiplatform releases ship separately from Kotlin and Jetpack Compose releases. This page contains information about Compose Multiplatform releases, the compatibility between different releases, and the release cycles.

Supported platforms

Compose Multiplatform %composeVersion% supports the following platforms:

  • Android
  • iOS
  • macOS (x86-64, arm64)
  • Windows (x86-64)
  • Linux (x86-64, arm64)
  • Web browsers

All Compose Multiplatform releases support only 64-bit platforms.

{style="note"}

Limitations of Compose Multiplatform for desktop releases

Compose Multiplatform for desktop has the following limitations:

  • Only JDK 11 or later is supported due to the memory management scheme used in Skia bindings.
  • Only JDK 17 or later is supported for packaging native distributions due to jpackage limitations.
  • There is a known issue with OpenJDK 11.0.12 when switching keyboard layouts on macOS. This issue isn't reproducible in OpenJDK 11.0.15.

Kotlin compatibility

As long as you are using Compose Multiplatform 1.6.10 or higher and Kotlin 1.7.10 or higher, Compose Multiplatform is compatible with Kotlin. There is no need to manually align their versions. Remember that using an EAP version of either product is still potentially unstable.

Compose Multiplatform requires Compose Compiler Gradle plugin applied with the same version as the Kotlin one. See for details.

It's strongly recommended that you update your Compose app created with Kotlin 2.0.0 to version 2.0.10 or later. The Compose compiler 2.0.0 has an issue where it sometimes incorrectly infers the stability of types in multiplatform projects with non-JVM targets, which can lead to unnecessary (or even endless) recompositions.

If your app is built with Compose compiler 2.0.10 or later but uses dependencies built with Compose compiler 2.0.0, these older dependencies may still cause recomposition issues. To prevent this, update your dependencies to versions built with the same Compose compiler as your app.

{style="warning"}

Jetpack Compose and Compose Multiplatform release cycles

Compose Multiplatform shares a lot of code with Jetpack Compose for Android, a framework developed by Google. We align our Compose Multiplatform release cycle with the release cycle of Jetpack Compose so that the common code is properly tested and stabilized.

When a new version of Jetpack Compose is released, we:

  • Use the release commit as a base for the next Compose Multiplatform version.
  • Add support for new platform features.
  • Stabilize all platforms.
  • Release a new version of Compose Multiplatform.

The gap between a Compose Multiplatform release and a Jetpack Compose release is usually 1–3 months.

Development versions of Compose Multiplatform

Development versions of the Compose Multiplatform compiler plugin (for example, 1.7.0-dev1776) are built without a set schedule, to test updates between formal releases.

These builds are not available in Maven Central. To access them, add this line to your list of repositories:

maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")

Jetpack Compose artifacts used

When you build your application for Android, Compose Multiplatform uses artifacts published by Google. For example, if you apply the Compose Multiplatform 1.5.0 Gradle plugin and add implementation(compose.material3) to your dependencies, then your project will use the androidx.compose.material3:material3:1.1.1 artifact in the Android target ( but org.jetbrains.compose.material3:material3:1.5.0 in other targets).

The following table lists Jetpack Compose artifact versions used by each version of Compose Multiplatform:

Compose Multiplatform version Jetpack Compose version Jetpack Compose Material3 version
1.7.1 1.7.5 1.3.1
1.7.0 1.7.1 1.3.0
1.6.11 1.6.7 1.2.1
1.6.10 1.6.7 1.2.1
1.6.2 1.6.4 1.2.1
1.6.1 1.6.3 1.2.1
1.6.0 1.6.1 1.2.0
1.5.12 1.5.4 1.1.2
1.5.11 1.5.4 1.1.2
1.5.10 1.5.4 1.1.2
1.5.1 1.5.0 1.1.1
1.5.0 1.5.0 1.1.1
1.4.3 1.4.3 1.0.1
1.4.1 1.4.3 1.0.1
1.4.0 1.4.0 1.0.1
1.3.1 1.3.3 1.0.1
1.3.0 1.3.3 1.0.1
1.2.1 1.2.1 1.0.0-alpha14
1.2.0 1.2.1 1.0.0-alpha14
1.1.1 1.1.0 1.0.0-alpha05
1.1.0 1.1.0 1.0.0-alpha05
1.0.1 1.1.0-beta02 1.0.0-alpha03
1.0.0 1.1.0-beta02 1.0.0-alpha03