What's new in Compose Multiplatform 1.11.0-beta01
Here are the highlights for this EAP feature release:
You can find the full list of changes on GitHub. Specific component versions for this release are listed in the Dependencies section.
Breaking changes and deprecations
Shader wrapper for non-Android targets
For non-Android targets, the Shader type has been refactored from an actual typealias of org.jetbrains.skia.Shader to a Compose-specific wrapper class. This change decouples the common API from direct Skia/Skiko dependencies.
Migration steps:
To use Skia/Skiko shaders in Compose APIs, wrap them using
SkShader.asComposeShader().To access low-level Skia types from a Compose
Shader, use theShader.skiaShaderextension property.If you use third-party libraries that rely on the
ShaderAPI, update them to newer compatible versions.
Minimum Kotlin version increased
If your project includes native or web targets, the latest features require an upgrade to Kotlin 2.3.10.
Dropped support for Apple x86_64 targets
Compose Multiplatform no longer supports Apple x86_64 targets, as they were deprecated in Kotlin. As a result, the iosX64 and macosX64 targets have been fully removed from all modules.
Deprecations
In Compose Multiplatform 1.9.0, we introduced the
WebElementViewcomposable to seamlessly integrate HTML elements into your web application. It turned out that the chosen name was a bit unclear, and we renamed it toHtmlElementViewto better reflect its HTML-specific purpose. TheWebElementViewversion has been deprecated in favor ofHtmlElementView.Key.Homehas been deprecated as it was incorrectly mapped. UseKey.MoveHomefor keyboard navigation orKey.SystemHomefor system-level actions.
Across platforms
Skia updated to Milestone 144
The version of Skia used by Compose Multiplatform, via Skiko, has been updated to Milestone 144.
The previous version of Skia used was Milestone 138. You can see the changes made between these versions in the release notes.
iOS
Native text input
Compose Multiplatform introduces a new text input implementation that uses native iOS UIView to manage input via the UITextInput and UIKeyInput protocols. This enables fully native iOS text editing behavior, including precise caret movement, native gestures, native selection handling, and system context menus with items like Autofill, Translate, and Search. The new approach aligns with the native iOS look and feel while also improving compatibility with future Apple updates.
While the existing Compose Multiplatform text input remains the stable choice for consistency across platforms, the native approach focuses on a user experience specifically tailored for iOS.
To enable the new text input, use the usingNativeTextInput option in the iOS source set:
The new native text input supports both the BasicTextField(TextFieldValue) and BasicTextField(TextFieldState) APIs, and is also compatible with the new context menu API enabled via the isNewContextMenuEnabled flag.
Web
Scroll on web targets brought in line with native UI
In Compose Multiplatform, scrolling performance on the web has been lagging behind that of native UIs. For the 1.11.0 release, a lot has been reworked and fixed in touch processing, bringing scrolling for Compose web apps in line with the other available targets. You can see the effect of these improvements in the latest web version of the KotlinConf App.
As part of this work, Coil image decoding on web has also been improved. If you use Coil, make sure to update to version 3.4.0 for the best experience.
The list of fixes, along with the explanations and demos of improvements, is available in the issue CMP-9727.
Dependencies
Library | Maven coordinates | Based on Jetpack version |
|---|---|---|
Runtime |
| |
UI |
| |
Foundation |
| |
Material |
| |
Material3 |
| |
Material3 Adaptive |
| |
Lifecycle |
| |
Navigation |
| |
Navigation3 |
| |
Navigation Event |
| |
Savedstate |
| |
WindowManager Core |
|