Changes since 1.9.3
See also What's new.
Highlights
Multiple Platforms
androidx.compose.ui.tooling.preview.Previewannotation is now available fromcommonMainsource set #2424
Desktop
- Compose Hot Reload Gradle plugin is bundled with Compose Gradle plugin (no need to configure it separately) #5444
Navigation
- Provide required
NavigationEventDispatcherOwnerfor a correct Navigation3 support #2382
Known Issues
Multiple Platforms
- Due to the bundled Hot Reload Gradle plugin, Compose Multiplatform requires Kotlin version 2.1.20 or higher #5444
Breaking Changes
iOS
- Align
@Composableattribute inWindowInsets.Companion.captionBarto other platforms #2258
Migration Notes
Multiple Platforms
- The pre‑1.7 workaround in the common
PopupProperties/DialogPropertiesconstructors (annotatedDeprecated(HIDDEN)since 1.7) has been removed. This change may formally affect binary compatibility. Although we are not aware of concrete cases, if your project depends on third‑party libraries that reference this constructor, please update those dependencies to versions compatible with this release #2303 - Kotlin 2.2 is required for native and web platforms #2357
- Remove experimental annotation from
usePlatformInsets,useSoftwareKeyboardInsetandscrimColorinDialogProperties#2495 - Remove experimental annotation from
usePlatformDefaultWidth,usePlatformInsetsinPopupProperties#2495 - Deprecation level of
Popupoverloads withoutPopupPropertiesparameter changed fromWARNINGtoERROR#2495 widgets-gallerysample has been removed in favor of the interactive API reference #5365- Deprecate
org.jetbrains.compose.ui.tooling.preview.Previewannotation in favor ofandroidx.compose.ui.tooling.preview.Previewto reduce variety of Preview annotations #5453 - Dependency aliases in Gradle plugin (e.g.
compose.ui) are now deprecated. Use provided direct artifact coordinates and add them to the version catalog #5462
iOS
- Remove experimental annotation from
LocalUIView#2478 - Removed deprecated since 1.8.0
defaultUIKitMain(). Please follow up-to-date guidelines to create an iOS application #2578
Desktop
- Deprecate
androidx.compose.desktop.ui.tooling.preview.Previewannotation in favor ofandroidx.compose.ui.tooling.preview.Previewto reduce variety of Preview annotations #2474 - Removed IntelliJ plugin sample, please refer to Jewel documentation instead #5368
Features
HTML
- Add support of
importantkeyword for CSS properties #5439
Multiple Platforms
- Update skia to m138 (see release notes) #2304
- Provide
LocalLifecycleOwnerinsiderunComposeUiTestby default #2400 - Provide public API for
@ResourceContentHashannotation generation #5402
iOS
- Add support for
WindowInsetsRulers#2258 - Support automatic scrolling for Full Keyboard Access #2222
- Support custom menu items for text context menu #2324
- Add API to configure
UIResponder.inputViewwithPlatformImeOptions#2350 - Add API to configure
UIResponder.inputAccessoryViewwithPlatformImeOptions#2350 - Add API to configure
UITextInputTraits.writingToolsBehaviorwithPlatformImeOptions#2435 - Add support for self-sizing of UIKit interop views in Compose #2485
- Add experimental
UIKitInteropProperties.placedAsOverlayflag, which allows to place interop views above the Compose canvas. This allows interop views with a transparent background or shader effect to be used #2501
Desktop
- Added
modalityTypeparameter toDialogWindow()#2300 - The Compose entry points on the desktop (
ComposeWindow,ComposePanelandImageComposeScene) now exposeval semanticsOwners: Collection<SemanticsOwner>#2358 - Experimental
-Dskiko.gpu.resourceCacheLimitVM property is introduced to limit GPU resource cache used for one window (default is 256M) #2422
Web
- Esc button calls back navigation event on the web now #2499
Resources
- Add
setResourceReaderAndroidContextto configure Android context in cases when a provider initialization is not available #5434
Lifecycle
- Publish multiplatform
lifecycle-viewmodel-navigation3library #2476
Navigation
- Basic support of the navigation3 library #2436
- Published
org.jetbrains.compose.material3.adaptive:adaptive-navigation3library #2516 - Add a new configuration option in
ComposeUIViewControllerto set end-edge gestures behavior #2519
Fixes
Multiple Platforms
- Fix application of
baselineShiftparameter in text layout #2304 - Fix setting
lineHeightto0in text layout #2304 - Align
roundToPx()behavior between platforms:NaNvalue produces0instead ofIllegalArgumentExceptionon non-JVM platforms now #2526 - Added previously missing
ExperimentalComposeUiApiannotation to platform-specificDragAndDropTransferData,DragAndDropEventandClipEntryconstructors on Desktop and Web. Working with these APIs already requires this annotation due to types of parameters, so it wasn't supposed to be marked as "stable" yet. You can follow CMP-7624 to track the updates about finalizing the shape of these APIs #2538 - Fixed
LocalInputModeManager.current.inputModenot being reset between tests #2548 - Fix crash when selecting text that only contains inline content #2600
- Fix possible corruption of the layout nodes tree #2611
iOS
- Fix incorrect behavior of
WindowInsets.displayCutoutin different interface orientations #2301 - Fix incorrect behavior of
WindowInsets.displayCutouton iPad #2301 - Fix the ability to use UIKitViewController inside
Popups andDialogs #2270 - Fix Accessibility announcing the old state of component #2327
- Align the semantics of TextFields with iOS text inputs #2331
- Clear
TextFieldfocus when another view becomes first responder #2337 - Fix crash when
parallelRenderingis enabled #2448 - Fix text context menu interaction on
Popups andDialogs #2434 - Fix crash when dragging two Scrollable components with two fingers #2456
- Fix the crash that occurs when the magnifier appears in text fields that are zero size #2460
- Fix Lifecycle status updates for multi-window applications using
UIScenenotifications #2472 - Support updating of the
WindowInfo.isWindowFocusedproperty when the window's state changes #2482 - Fix the text removal issue when inputting text using dictation #2488
- Fix
onKeyEventhandling whenFull Keyboard Accessis enabled #2494 - Fix incorrect tap responses in
DialogwhenLocalDensityis modified #2527 - Fix the spoken text in merged accessibility nodes #2539
- Fix an issue where accessibility elements inside other accessibility elements may not be accessible #2539
- Fix
NSRangeExceptionon back gesture #2605 - Fix focusing of
DialogandPopupwhen the Full Keyboard Mode is enabled #2606 - Fix crash in accessibility when
SemanticNodeis not attached #2616
Desktop
- Fix non-focusable popup with
compose.layers.type=WINDOWstealing focus #2285 - Change
ComposePanel.getPreferredSizeto return 0x0 instead ofnull#2283 - Request initial focus for focusable popups when used from
ComposePanelin some cases #2289 - In experimental
compose.layers.typemodes, fixPopup/Dialogcontainer size calculation that prevents mouse interactions on base compose scene #2304 - Fixed the sizing of unfocusable layers when
compose.layers.type=COMPONENTis used #2305 SwingPanelno longer requires to be manually sized to a fixed value; it will size according to its content's min/pref/max sizes #2310- Made disabled new context menu items actually disabled, including the right semantics #2347
- Fixed
ComposePanelnot initially focusing the first focusable node, when running in JetBrains Runtime JVM #2384 - Fixed background flashing when a window or dialog are closed #2403
- Fix "ComposePanel doesn't use hardware acceleration with
RenderSettings.SwingGraphicson Linux" #2422 - ComposePanel now re-dispatches unconsumed mouse wheel events, allowing scrollable components beneath to be scrolled. To disable this, set the system property
"compose.swing.redispatchMouseWheelEvents"to"false"#2425 - Fix background flashing when showing a window/dialog #2471
- Fix
SwingPanelblocking mouse wheel scroll events from going to its parent #2486 - Fix the accessibility issue where screen readers cannot review text in a text field #2553
- Fix the accessibility issue where scrollable text fields are not accessible for screen readers #2553
- Children of nodes with
isTraversalNodesemantics are now ordered according to theirtraversalIndex#2544 - [macOs] Fix
[MTLTextureDescriptorInternal validateWithDevice:]crash when using zero-sizeComposePanelwithcompose.swing.render.on.graphics=true#2585 - [Linux] Support distributions with glibc 2.27 #2585
- Fixed a race condition that occurred when multiple processes attempted to unpack Skiko binary files at startup #2585
Web
- Mobile. Composite input. When a syllable block is created, a new block is added instead of replacing the old one #2454
- Correct drag-and-drop behaviour on mobile devices #2510
- Fix incorrect interpretation of
ontouchendevents #2490 - Unblock autocomplete and the other keyboard features on mobile iOS #2529
- Correct behaviour when a virtual keyboard suggestion was accepted while the cursor was in the middle of the word #2530
- Fix the issue where Hangul input behaves inconsistently after deleting with Backspace #2559
Resources
- Fix resource access in a Robolectric test environment #5433
- Fixed an issue where resources were not copied when packaging the macOS native target, causing the application to crash when it attempted to read those resources #5431
- Fixed resources generated code to be reproducible between different machines #5446
- Fix a crash when calling
getStringand the Locale has no region specified #5447 - Use the non-empty font as the default when awaiting a asynchronous request completion on the web #5456
- Use Web Cache API for all resources to avoid repeated and redundant HTTP requests #5379
- Fix resource gradle tasks invocation on AGP < 9.0.0 for Android Studio previews #5478
- Update iOS resource copying to an iOS app bundle to support Swift Export libraries #5480
Navigation
- Ignore back gestures in navigation in case of open dialog for non-android targets #2439
SavedState
- All platforms have
HasDefaultViewModelProviderFactoryimplementation now, and it provides an ability to usecreateSavedStateHandle()function without a navigation library #2554
Components
Gradle plugin
org.jetbrains.compose version 1.10.0
Libraries
| Library group | Coordinates | Based on Jetpack |
|---|---|---|
| Runtime | org.jetbrains.compose.runtime:runtime*:1.10.0
| Runtime 1.10.0 |
| UI | org.jetbrains.compose.ui:ui*:1.10.0
| UI 1.10.0 |
| Foundation | org.jetbrains.compose.foundation:foundation*:1.10.0
| Foundation 1.10.0 |
| Material | org.jetbrains.compose.material:material*:1.10.0
| Material 1.10.0 |
| Material3 | org.jetbrains.compose.material3:material3*:1.10.0-alpha05
| Material3 1.5.0-alpha08 |
| Material3 Adaptive | org.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-alpha02
| Material3 Adaptive 1.3.0-alpha03 |
| Lifecycle | org.jetbrains.androidx.lifecycle:lifecycle-*:2.10.0-alpha06
| Lifecycle 2.10.0 |
| Navigation | org.jetbrains.androidx.navigation:navigation-*:2.9.1
| Navigation 2.9.4 |
| Navigation3 | org.jetbrains.androidx.navigation3:navigation3-*:1.0.0-alpha06
| Navigation3 1.0.0 |
| Navigation Event | org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.0
| Navigation Event 1.0.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 |