Changes since 1.12.0
Known issues
Web
- RuntimeError: memory access out of bounds error (YouTrack issue). Workaround is to disable the snapshot cache:
ComposeUiFlags.useSnapshotCache = false
Highlights
Desktop
Web
Breaking Changes
Gradle Plugin
- Deleted deprecated Compose Gradle Plugin API:
compose.web.targets(...)#5685
Migration Notes
Multiple Platforms
- Skottie is no longer included in the Skiko core binary and is no longer bundled with Compose Multiplatform. To continue using Skottie, add
org.jetbrains.skiko:skiko-skottietocommonMain. If your project targets desktop, also addorg.jetbrains.skiko:skiko-skottie-awt-runtime-alltodesktopMain#3234 - Removed
ComposeUiFlags.useLegacyRenderNodeLayersflag used to revert legacy (pre 1.8) render node layers for cases withoutandroidx.compose.ui.graphics.layer.GraphicsLayer#3213
Desktop
- Renamed
AlignedToScreentoAlignedToScreenAvailableBoundsandCenteredOnScreentoCenteredInScreenBoundsto clarify their behavior.CenteredInScreenBoundsnow actually centers on the screen (ignoring insets) #3291
Android
- The minimum supported SDK is raised to 24 #3351
Features
HTML library
- Add
StyleScope.insetextension functions #5194
Multiple Platforms
- Add support for
mediaQuerycalls which allows to modify Composables depending on device characteristics #3339
iOS
- Use
UIViewlayout and draw phases to run corresponding operation for Compose containers #3212 - Added possibility to configure
spellCheckingTypefor textfields withusingNativeTextInput = trueviaPlatformImeOptions#3305 - Support iOS Dynamic Type font scaling based on accessibility settings #3306
- Support preferred-size reporting for Compose hosting views (
ComposeHostingView/ComposeHostingViewController) embedded in UIKit or SwiftUI throughsizeThatFitsproposals. Keep the defaultComposeContainerConfiguration.preferredSizeReportingStrategy = PreferredSizeReportingStrategy.SizeThatFits, for UIKit and SwiftUI on iOS 16 and later. For SwiftUI on iOS < 16, usePreferredSizeReportingStrategy.IntrinsicContentSize#2984
Desktop
- Added a new
WindowPositionProvider.CenteredInScreenBounds(DpOffset)function that centers on the screen #3291 - Disabled Swing double buffering to reduce memory footprint #3336
- (prerelease fix) Bump Compose Hot Reload to 1.3.0-alpha01 #5683
Web
- Added prefetching of
LazyLayoutitems during browser idle times #2928 - Added experimental support for system window insets on Web #3202
- Added support to
LazyLayouts to run some work without blocking current frame's painting #2929 - Disposing Compose application automatically if parent container is destroyed #3242
- Deprecate
PointerIcon.Companion.fromKeywordand introduce equivalentPointerIconhelper function instead #3287 - Add experimental API to render WebGL textures #3323
Gradle Plugin
- Allow excluding libraries from the dependency compatibility check via
compose { dependencyCompatibility { } }extension #5694
Fixes
Multiple Platforms
- Fixes that
GraphicsLayerwithCompositingStrategy.ModulateAlphadoes not applyalphavalue without extra invalidation #3204 - Fixed an issue in
runComposeUiTestV2 when input events requiredwaitForIdleto be processed #3302 - Fix crash in cases when Skia returns null
ColorFilterdue to no-op parameter combination #3319
iOS
- Fixed UIKit keyboard animation curve handling by converting
UIKeyboardAnimationCurveUserInfoKeyvalues toUIViewAnimationOptions#3183 - Fix
BasicTextFieldfocus handoff between nested Compose iOS scenes #3203 - Fixed the floating cursor no longer responding horizontally after a very quick swipe on iOS #3224
- Fixed the caret not snapping to the nearest word boundary when tapping inside a word in an unfocused
BasicTextField(TextFieldValue)#3229 - Fixed the context menu appearing incorrectly after a tap in
BasicTextField(TextFieldValue)andBasicTextField(TextFieldState)#3229 KeyboardOptions.autoCorrectEnabled = falsenow disables spell checking too (in addition to iOS autocorrection) in textfields withusingNativeTextInput = true#3305- Fix an issue where back-swipe progress could exceed its maximum when a gesture moved beyond the window bounds #3337
- Fixed the system "Bold Text" accessibility setting not being applied to CJK characters when using
FontFamily.Default#3325 - Default Navigation3 push and pop transitions now follow the layout direction: in RTL layouts a push enters from the left edge and a pop reveals the previous entry from the right edge, matching native
UINavigationControllerbehavior #3346
Desktop
- Made window resizing smooth on macOS when using Metal (the default renderer). To enable the fix, set the system property
skiko.rendering.macos.metalSynchronousLiveResizetotrue. This will eventually become the default #3261 - [macOS] Fixed the behavior of
Ctrl+f/bin text fields (it was reversed) #3294 - Fixed an issue that caused a background flash when a window was shown for the first time #3299
- Made window resizing smooth on Windows when using Direct3D (the default renderer). To enable the fix, set the system property
skiko.rendering.windows.direct3DSynchronousLiveResizetotrue. This will eventually become the default #3299 - Fixed potential crash when the accessibility subsystem processes
focusLost#3361 - Fix crash when trying to set the content of an unavailable/busy clipboard #3364
- Fixed SVG rasterization caching to properly reuse cached bitmap unless size changes #5639
Web
- Show a meaningful message instead of an obscure app crash when the browser or device doesn't support WebGL2 #3222
- Fix fast deletion in mobile browsers on iOS when using the Traditional Chinese Cangjie keyboard #3167
- Fix fast deletion of text containing emojis in mobile browsers on iOS #3167
- Introduce a fallback locale and handle malformed language tags #3241
- Ensure canvas retains focus after backing HTML input removal #3246
- Fix cursor control using spacebar sliding gesture in Firefox mobile #3273
- Fix Tab focus order with interop elements #3249
- Fixed outer
HorizontalPagerstealing the touch gesture from a nestedHorizontalPagerduring a slow drag #3293 - Fix blurred UI when zooming #3303
- Support
SemanticProperties.disabledin Compose Web a11y #3308 - Fix incorrect a11y tree state after opening and closing a popup or dialog #3298
- Fixed
1nMakeRasterN32Premul is not definedwhen runningrunComposeUiTestwith JS #3316 - Fix virtual keyboard hiding after tapping on a selection handle without moving it #3328
- Support
LinkAnnotationin a11y tree, so link nodes haverole=link#3331 - Fix
LocalWindowInfo.current.isWindowFocusednot updating when browser window focus changes on Web #3347
Android
- Fixed rare
InterruptedExceptioncrashes when reading resources during composition on an interrupted thread #5677
Resources
- Return a default plural rule for unknown locales #5650
- Fixed Android ANR when
Dispatchers.Defaultis overloaded #5688 - Fixed a Main thread deadlock when resources are read from blocking and non blocking coroutines #5691
- Fix R8 release builds failing because the optional Android test instrumentation API is unavailable #5667
Navigation
- Fix pop animations on iOS when custom enter/exit animations are set #3292
Components
Gradle plugin
org.jetbrains.compose version 1.13.0-alpha01
Libraries
| Library group | Coordinates | Based on Jetpack |
|---|---|---|
| Runtime | org.jetbrains.compose.runtime:runtime*:1.13.0-alpha01
| Runtime 1.13.0-alpha02 |
| UI | org.jetbrains.compose.ui:ui*:1.13.0-alpha01
| UI 1.13.0-alpha02 |
| Foundation | org.jetbrains.compose.foundation:foundation*:1.13.0-alpha01
| Foundation 1.13.0-alpha02 |
| Material | org.jetbrains.compose.material:material*:1.13.0-alpha01
| Material 1.13.0-alpha02 |
| Material3 | org.jetbrains.compose.material3:material3*:1.13.0-alpha01
| Material3 1.5.0-alpha27 |
| Material3 Adaptive | org.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-rc01
| Material3 Adaptive 1.3.0 |
| Lifecycle | org.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0
| Lifecycle 2.11.0 |
| Navigation | org.jetbrains.androidx.navigation:navigation-*:2.10.0-beta01
| Navigation 2.10.0 |
| Navigation3 | org.jetbrains.androidx.navigation3:navigation3-*:1.2.0-beta01
| Navigation3 1.2.0-beta01 |
| Navigation Event | org.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0
| Navigation Event 1.1.1 |
| Savedstate | org.jetbrains.androidx.savedstate:savedstate*:1.4.0
| Savedstate 1.4.0 |
| WindowManager Core | org.jetbrains.androidx.window:window-core:1.5.1
| WindowManager 1.5.1 |