Changes since 1.8.0-alpha02
Highlights
Multiple Platforms
- Compose Multiplatform codebase is fully migrated to K2. Please note that native and web klibs can be consumed only with Kotlin 2.1.0 or newer. Also, due to underlying changes in the compiler plugin, it's better to recompile libraries against the new version. Please let us know if you find any compatibility issues during this migration
- Implement multiplatform
BackHandler
andPredictiveBackHandler
. And use them in material3 widgets and androidx-navigation library
Breaking Changes
Multiple Platforms
- IdlingResource interface was moved from commonMain to android and desktop source sets. The related experimental methods of ComposeUiTest were moved too. They are not available for Web and iOS anymore. Consider using waitUntil function as an alternative. Note: it's a breaking change only for Web and iOS, but not for Desktop and Android
iOS
Features
Multiple Platforms
- Update skia to m132
- Adopt a new
Clipboard
interface with suspend functions, which work correctly on all targets including Web. TheClipboardManager
was deprecated because it was not possible to correctly implement it for Web
iOS
- Support VoiceControl on iOS
AccessibilitySyncOptions
removed. The accessibility tree is built on demand- Calculate the order and location of semantic elements in the same way as it's done on Android
- Support
UIAccessibilityContainerTypeSemanticGroup
for traversal groups - Compose works correctly with nested
UIScrollView
s, as well as withinUIScrollView
s - Added the ability to close modal Compose view controllers (with non-scrollable content on them) with a swipe gesture
Fixes
Multiple Platforms
- Fix light source position for shadow rendering to match the Material specification and Android behavior
- Fix inconsistency between Android and Desktop in
placeWithLayer
scale application: offset is not scaled now (Android behavior) - Clear the canvas before rendering each frame in tests, to avoid drawing different frames on top of each other, resulting in incorrect images being returned by
captureToImage
iOS
- Performance issues when iOS screen reader is active fixed
- Fixed issues where the interactive pop gesture would stop working
- Fixes an issue where it's not possible to close the
UIMenu
that appears over the Compose content - Fix touches tracking for multitouch gestures
Desktop
- Elements marked with
Modifier.semantics { hideFromAccessibility() }
should now be correctly hidden from a11y - Fixed the positioning of the IME candidate popup for
TextField(TextFieldState)
(akaBasicTextField2
) - Fixed input of diacritics via long-press on macOS in
TextField(TextFieldState)
(akaBasicTextField2
) - Radio buttons and any other elements using
Modifier.selectable
withRole.RadioButton
will have their state reported to accessibility viaAccessibleValue.getCurrentAccessibleValue()
and asAccessibleState.CHECKED
ingetAccessibleStateSet()
Web
- The
BasicTextField
handles browser copy/cut/paste events correctly now. Previously, they were ignored
Dependencies
-
Gradle Plugin
org.jetbrains.compose
, version1.8.0-alpha03
. Based on Jetpack Compose libraries: -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.9.0-alpha03
. Based on Jetpack Lifecycle 2.9.0-alpha03 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.8.0-alpha13
. Based on Jetpack Navigation 2.8.4 -
Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.1.0-alpha03
. Based on Jetpack Material3 Adaptive 1.1.0-beta01