Releases: JetBrains/compose-multiplatform
1.10.0-alpha03
Changes since 1.10.0-alpha02
Migration Notes
Multiple Platforms
- (prerelease fix) Disabled (by default) the new text context menus until they are fully supported. You can enable them by setting
ComposeFoundationFlags.isNewContextMenuEnabled = true#2466 - Deprecate
org.jetbrains.compose.ui.tooling.preview.Previewannotation in favor ofandroidx.compose.ui.tooling.preview.Previewto reduce variety of Preview annotations #5453
iOS
- Remove experimental annotation from
LocalUIView#2478
Desktop
- Deprecate
androidx.compose.desktop.ui.tooling.preview.Previewannotation in favor ofandroidx.compose.ui.tooling.preview.Previewto reduce variety of Preview annotations #2474
Features
Lifecycle
- Publish multiplatform
lifecycle-viewmodel-navigation3library #2476
Fixes
Multiple Platforms
- (prerelease fix) Provide
LocalWindowInfo.current.containerDpSizevalue #2493
iOS
- 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
Desktop
- 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
Web
- Removed an outline on a
Canvaselement when it's focused #2450 - Fix focus with Tab behaviour in Text Fields #2452
- Mobile. Composite input. When a syllable block is created, a new block is added instead of replacing the old one #2454
Resources
- 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
Navigation
- Ignore back gestures in navigation in case of open dialog for non-android targets #2439
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.10.0-alpha03. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.10.0-alpha03. Based on Jetpack Compose Material3 1.5.0-alpha06 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-beta01. Based on Jetpack Compose Material3 Adaptive 1.2.0-rc01 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.10.0-alpha03. Based on Jetpack Lifecycle 2.10.0-alpha05 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.1. Based on Jetpack Navigation 2.9.4 -
Navigation 3 libraries
org.jetbrains.androidx.navigation:navigation3-*:1.0.0-alpha03. Based on Jetpack Navigation 3 -
Navigation Event library
org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.0-alpha02. Based on Jetpack Navigation Event 1.0.0-beta01
ASalavei marked this conversation as resolved. -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.4.0-alpha03. Based on Jetpack Savedstate 1.4.0-beta01 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.5.0-beta01. Based on Jetpack WindowManager 1.5.0
1.9.1
Changes since 1.9.0
Migration Notes
Multiple Platforms
-
compose.material3alias from Gradle plugin now points toorg.jetbrains.compose.material3:material3:1.9.0(based on Jetpack Compose Material31.4.0), it wasorg.jetbrains.compose.material3:material3:1.8.2(based on Jetpack Compose Material31.3.2) in Compose Multiplatform1.9.0. If you want to stay on the same minor version, replace the alias by an explicit dependency: #5441// was implementation(compose.material3) // replace by implementation("org.jetbrains.compose.material3:material3:1.8.2")
Fixes
iOS
- Add ability to reach internal accessibility elements inside accessibility nodes #2416
- Fix input session restarts triggered by
PlatformImeOptionsImplnot being@Immutable#2413 - Fix crash when removing characters after string replacement #2361
- Fix context menu appearance for text fields with transformation #2377
Desktop
ComposePanelcan now re-dispatch unconsumed mouse wheel events, allowing scrollable components beneath to be scrolled. To enable this behavior, set the system property"compose.swing.redispatchMouseWheelEvents"to"true"#2438
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.9.1. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.9.0. Based on Jetpack Compose Material3 1.4.0 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha05. Based on Jetpack Compose Material3 Adaptive 1.2.0-alpha10 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.9.5. Based on Jetpack Lifecycle 2.9.4 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.1. Based on Jetpack Navigation 2.9.4 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.3.5. Based on Jetpack Savedstate 1.3.3 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.4.0. Based on Jetpack WindowManager 1.4.0
1.10.0-alpha02
Changes since 1.10.0-alpha01
Highlights
Multiple Platforms
androidx.compose.ui.tooling.preview.Previewannotation is now available fromcommonMainsource set #2424
Navigation
- Provide required
NavigationEventDispatcherOwnerfor a correct Navigation3 support #2382
Features
Multiple Platforms
- Provide
LocalLifecycleOwnerinsiderunComposeUiTestby default #2400
iOS
- Add API to configure
UITextInputTraits.writingToolsBehaviorwithPlatformImeOptions#2435
Desktop
- Experimental
-Dskiko.gpu.resourceCacheLimitVM property is introduced to limit GPU resource cache used for one window (default is 256M) #2422
Resources
- Add
setResourceReaderAndroidContextto configure Android context in cases when a provider initialization is not available #5434
Navigation
- Basic support of the navigation3 library #2436
Fixes
Multiple Platforms
- (prerelease fix) Fix "Cinterop fails with an error when Compilation works fine" #2386
- (prerelease fix) Fix "warning: KLIB resolver: Could not find" #2386
iOS
- Clear
TextFieldfocus when another view becomes first responder #2337 - Fix context menu appearance for text fields with transformation #2377
- Fix input session restarts triggered by
PlatformImeOptionsImplnot being@Immutable#2413 - Add ability to reach internal accessibility elements inside accessibility nodes #2416
Desktop
- 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
Resources
- Fix resource access in a Robolectric test environment #5433
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.10.0-alpha02. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.10.0-alpha02. Based on Jetpack Compose Material3 1.5.0-alpha04 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha07. Based on Jetpack Compose Material3 Adaptive 1.2.0-beta03 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.10.0-alpha02. Based on Jetpack Lifecycle 2.10.0-alpha04 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.0. Based on Jetpack Navigation 2.9.1 -
Navigation Event library
org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.0-alpha01. Based on Jetpack Navigation Event 1.0.0-alpha09 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.4.0-alpha02. Based on Jetpack Savedstate 1.4.0-alpha03 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.5.0-alpha02. Based on Jetpack WindowManager 1.5.0
1.9.0
Changes since 1.8.2
See also What's new.
Highlights
Web
- Added a
WebElementViewComposable function for embedding the absolutely positioned HTML content in Compose for web target. It's supported only when usingComposeViewportentry point and it's not supported withCanvasBasedWindow, which is deprecated now #2145 - Text context menu is supported on web platforms for both modes: mobile and desktop #2207
- Introduce the basic support of accessibility in the web target #2188
Migration Notes
Multiple Platforms
- Material3 versioning is decoupled for the Compose Multiplatform 1.9.* release due the upstream Jetpack Compose Material3 1.4 has not been released as stable yet #5360
compose.material3now points to the latest stable Material3 version, 1.8.2. If the latest Material3 features are needed, please include it this way: #5360implementation("org.jetbrains.compose.material3:material3:1.9.0-beta06")- [If you use
org.jetbrains.compose.material3:material3:1.9.0-beta06]kotlinx-datetimeis updated to0.7.1. If you also use it in your projects, please update it to this version to ensure compatibility #2276
iOS
- Remove experimental attribute from
UIKitInteropInteractionMode#2215
Desktop
WindowandDialogWindowoverloads that create aComposeWindow/ComposeDialoghave been renamed toSwingWindow/SwingDialogand the old versions have been deprecated #2141- When the window is iconified, converting to/from screen coordinates (with e.g.
LayoutCoordinates.positionOnScreen()) will returnOffset.Unspecified#2163 - Deprecated experimental
Modifier.mouseClickableis removed. See https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-desktop-mouse-events.html for alternatives #2194 - Kotlin 2.1 is required for all platforms including JVM (it was required only for native and web before) #2276
Web
fun ComposeViewportwithviewportContainerId: String?parameter now can be called from a web-commonfun main(k/js and k/wasm) #2226CanvasBasedWindowis deprecated, useComposeViewportinstead. UnlikeCanvasBasedWindow, which expect as an input param the id to theHTMLCanvasElementthat will be used for rendering,ComposeViewportone passesparentContainer(and corresponding HTML Canvas element will be created automatically). By default such container isdocument.body#2280- Setting
org.jetbrains.compose.experimental.jscanvas.enabled=trueis not required anymore when having a kotlin/js target #5340
Gradle Plugin
- The Compose Gradle plugin requires the Kotlin Gradle plugin version 2.+ now. Old
org.jetbrains.compose.compileris not supported anymore and the API to configure it was removed #5283
Features
Multiple Platforms
- Adopted a change in
ComposeUiTestAPI. TheblockinrunComposeUiTestissuspendnow. It allows to callawaitIdleand other suspend functions. It ensures a correct execution of a test on all platforms. See the web specifics inkotlinx.coroutines.test.runTestdocumentation #2066 - Support customizable shadows #2183
- Extended the
@Preview(org.jetbrains.compose.ui.tooling.preview) annotation with the following parameters: name, group, widthDp, heightDp, locale, showBackground, backgroundColor. IDE (IJ or AS) will pick up these parameters in the same way it works forandroidxPreview annotations #5339
iOS
- Add support for native IME configuration with
PlatformImeOptions#2108 - Add support for
keepScreenOnmodifier #2180 - Support new context menu API with default menu #2214
- Add support for frame rate voting #2205
- Support scroll commands with Voice Control #2234
- Implement accessibility scroll to focused interop views #2228
Desktop
- Add accessibility role for
Switch, reporting it as a checkbox #2136 - Added
SwingFrameandSwingDialogcomposables that allow configuring the window/dialog before it is shown #2139 - Full
AnnotatedStringis available as a data flavor inClipEntry, instead of only its text #2092 - Add
RenderSettings.SwingGraphicsoption forComposePanel.renderSettingsargument #2071 - Basic support for new context menu API #2196
- Added experimental support for save and restore compose state.
ComposePanel,ComposeWindowandComposeDialognow hassavedStateconstructor parameter to restore previous state andsaveStatefunction to save the current state for later use #2225
Web
- Support the new context menu API in web targets in the desktop mode #2224
- Support of the new context menu toolbar in web mobile targets #2251
- [js] there's no need to manually add skiko.js to the html page any more #2264
- Introduce
composeCompatibilityBrowserDistributiontask. This task combines two prod distributions - for js and for wasm in such way so that if modern required features are not supported by the consumer browser, application switch to js mode #5375
Resources
- Added
JvmResourceReaderAPI and madeLocalResourceReaderpublic to allow providing a custom classloader for desktop target #5334
Navigation
- A new API was added to bind the browser navigation state with the
NavController-suspend fun NavController.bindToBrowserNavigation. And the existing functionsuspend fun Window.bindToNavigationis deprecated now #2189
Fixes
Multiple Platforms
- Fix extra draw invalidations during scrolling (1.8 regression) #2212
- Fix text ellipsis if there's not enough vertical space to fit all lines #2246
- Fix "IrLinkageError: Function can not be called: No function found for symbol" #2293
ExperimentalMaterial3ExpressiveApiannotation removed from no-longer-experimental API #2298
iOS
- Fix issue where keyboard would appear after second tap when text input session was intercepted #2049
- Change the accessibility selection to the element that has most recently been focused on #2217
- Fix Full Keyboard Access on iOS 17 and lower #2216
- Fixes the appearance of the keyboard when a pop-up or dialog on the background is dismissed #2240
- Do not flatten accessibility tree inside accessibility elements #2243
Desktop
- [macOS] Fix the background flashing when closing a window/dialog and an animation is running #2058
- [macOS; JBR] Fixed the current composition in a text field being duplicated into another text field when switching focus to it #2026
- [macOS] Fixed strange glyph being displayed in a text field if window becomes un...
1.9.0-rc02
Changes since 1.9.0-rc01
Fixes
Multiple Platforms
- (prerelease fix) Fix "Cinterop fails with an error when Compilation works fine" #2386
- (prerelease fix) Fix "warning: KLIB resolver: Could not find" #2386
Web
- Fix the issue where deleting a word in the middle of a sentence also affects the word next to it #2372
Gradle Plugin
- (prerelease fix) Fix
composeCompatibilityBrowserDistributiontask lazy configuration #5398
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.9.0-rc02. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.9.0-beta05. Based on Jetpack Compose Material3 1.4.0-beta03 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha06. Based on Jetpack Compose Material3 Adaptive 1.2.0-alpha11 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.9.4-rc01. Based on Jetpack Lifecycle 2.9.2 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.0-rc02. Based on Jetpack Navigation 2.9.1 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.3.4-rc01. Based on Jetpack Savedstate 1.3.1 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.4.0-rc02. Based on Jetpack WindowManager 1.4.0
1.10.0-alpha01
Highlights
Multiple Platforms
widgets-gallerysample has been removed in favor of the interactive API reference #5365
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
Desktop
Features
Multiple Platforms
- Update skia to m138 (see release notes) #2304
- The new context menu is enabled by default on all platforms now. It still might be disabled via
ComposeFoundationFlags.isNewContextMenuEnabledflag in case of issues #2341 - 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
Desktop
- Added
modalityTypeparameter toDialogWindow()#2300 - The Compose entry points on the desktop (
ComposeWindow,ComposePanelandImageComposeScene) now exposeval semanticsOwners: Collection<SemanticsOwner>#2358
Fixes
Multiple Platforms
- Fix application of
baselineShiftparameter in text layout #2304 - Fix setting
lineHeightto0in text layout #2304
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
- Fix crash when removing characters after string replacement #2361
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
Web
- Fix the issue where deleting a word in the middle of a sentence also affects the word next to it #2372
Gradle Plugin
- Support
AGP 9.0.0#5391 - (prerelease fix) Fix composeCompatibilityBrowserDistribution task lazy configuration #5398
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.10.0-alpha01. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.10.0-alpha01. Based on Jetpack Compose Material3 1.5.0-alpha03 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha06. Based on Jetpack Compose Material3 Adaptive 1.2.0-alpha11 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.10.0-alpha01. Based on Jetpack Lifecycle 2.10.0-alpha03 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.0-rc01. Based on Jetpack Navigation 2.9.1 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.4.0-alpha01. Based on Jetpack Savedstate 1.4.0-alpha03 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.5.0-alpha01. Based on Jetpack WindowManager 1.5.0-beta02
1.9.0-rc01
Fixes
Multiple Platforms
- (prerelease fix) Fix incorrect light source position for dynamic shadows in some cases #2328
Desktop
- (prerelease fix) Fixed focus indication being shown in touch input mode #2342
- Fix
runReleasetask when navigation andobfuscate.set(true)are used #5384
Lifecycle
- Fix dependency to Compose in
lifecycle-viewmodel-composemodule:2.9.2incorrectly refer Compose Multiplatform1.9.0-beta03. Now it reverted back to1.8.2#2318
SavedState
- Fix dependency to Compose in
savedstate-composemodule:1.3.2incorrectly refer Compose Multiplatform1.9.0-beta03. Now it reverted back to1.8.2#2321
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.9.0-rc01. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.9.0-beta04. Based on Jetpack Compose Material3 1.4.0-beta02 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha05. Based on Jetpack Compose Material3 Adaptive 1.2.0-alpha10 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.9.3. Based on Jetpack Lifecycle 2.9.2 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.0-rc01. Based on Jetpack Navigation 2.9.1 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.3.3. Based on Jetpack Savedstate 1.3.1 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.4.0-rc01. Based on Jetpack WindowManager 1.4.0
1.9.0-beta03
Changes since 1.9.0-beta01
Breaking Changes
Multiple Platforms
-
(prerelease fix) All public APIs tagged with
ExperimentalMaterial3ExpressiveApiorExperimentalMaterial3ComponentOverrideApihave been removed, see Google Jetpack changelog. Please use the previous Material3 alpha version explicitly to continue enjoying these features: #2278implementation("org.jetbrains.compose.material3:material3:1.9.0-alpha04")
Migration Notes
Multiple Platforms
kotlinx-datetimeis updated to0.7.1. If you also use it in your projects, please update it to this version to ensure compatibility #2276
Desktop
- Kotlin 2.1 is required for all platforms including JVM (it was required only for native and web before) #2276
Web
CanvasBasedWindowis deprecated, useComposeViewportinstead. UnlikeCanvasBasedWindow, which expect as an input param the id to theHTMLCanvasElementthat will be used for rendering,ComposeViewportone passesparentContainer(and corresponding HTML Canvas element will be created automatically). By default such container isdocument.body#2280
Features
Web
- Support of the new context menu toolbar in web mobile targets #2251
- [js] there's no need to manually add skiko.js to the html page any more #2264
- Introduce
composeCompatibilityBrowserDistributiontask. This task combines two prod distributions - for js and for wasm in such way so that if modern required features are not supported by the consumer browser, application switch to js mode #5375
Fixes
Multiple Platforms
- Fix text ellipsis if there's not enough vertical space to fit all lines #2246
- Fix "IrLinkageError: Function can not be called: No function found for symbol" #2293
ExperimentalMaterial3ExpressiveApiannotation removed from no-longer-experimental API #2298
iOS
- Do not flatten accessibility tree inside accessibility elements #2243
Desktop
- [macOS] Fix composite (e.g. Chinese) input after pressing backspace #2250
- [TextField] Fixed duplication of the composed characters when moving the caret by clicking during a composition #2255
- (prerelease fix) Close the context menu when a menu item is clicked (old context menu API) #2259
- Correctly remove
SwingPanelchildren ofComposePanel, when the compose panel is itself removed from the hierarchy #2277 - (prerelease fix) Fix
DialogWindowcausing a taskbar icon to be displayed in some cases where it shouldn't #2291
Web
- Fix software keyboard behaviour for Compose Text Fields in iOS Safari #2260
- Fixed the bugs with composite text input #2256
- (prerelease fix) Hide disabled context menu items in the web text toolbar menu #2268
- (prerelease fix) Show the "paste" item regardless of the the clipboard content state if the Clipboard API is supported #2267
- (prerelease fix) The context menu will not show the Clipboard-related items when the Clipboard API are not supported by a browser #2266
- Fixed the issue with software keyboard when it was shown repeatedly in Chrome mobile #2279
- (prerelease fix) The context menu had only "Select All" item when targeting k/js #2296
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.9.0-beta03. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.9.0-beta03. Based on Jetpack Compose Material3 1.4.0-beta01 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha05. Based on Jetpack Compose Material3 Adaptive 1.2.0-alpha10 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.9.2. Based on Jetpack Lifecycle 2.9.2 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.0-beta05. Based on Jetpack Navigation 2.9.1 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.3.2. Based on Jetpack Savedstate 1.3.1 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.4.0-beta01. Based on Jetpack WindowManager 1.4.0
1.9.0-beta01
Changes since 1.9.0-alpha03
Highlights
Web
- Text context menu is supported on web platforms for both modes: mobile and desktop #2207
- Introduce the basic support of accessibility in the web target #2188
Migration Notes
Multiple Platforms
-
Material3 versioning is decoupled for the Compose Multiplatform 1.9.* release due the upstream Jetpack Compose Material3 1.4 has not been released as stable yet #5360
-
compose.material3now points to the latest stable Material3 version, 1.8.2. If the latest Material3 features are needed, please include it this way: #5360implementation("org.jetbrains.compose.material3:material3:1.9.0-alpha04")
iOS
- Remove experimental attribute from
UIKitInteropInteractionMode#2215
Web
fun ComposeViewportwithviewportContainerId: String?parameter now can be called from a web-commonfun main(k/js and k/wasm) #2226
Features
Multiple Platforms
- Extended the
@Preview(org.jetbrains.compose.ui.tooling.preview) annotation with the following parameters: name, group, widthDp, heightDp, locale, showBackground, backgroundColor. IDE (IJ or AS) will pick up these parameters in the same way it works forandroidxPreview annotations #5339
iOS
- Support new context menu API with default menu #2214
- Add support for frame rate voting #2205
- Support scroll commands with Voice Control #2234
- Implement accessibility scroll to focused interop views #2228
Desktop
- Basic support for new context menu API #2196
- Added experimental support for save and restore compose state.
ComposePanel,ComposeWindowandComposeDialognow hassavedStateconstructor parameter to restore previous state andsaveStatefunction to save the current state for later use #2225
Web
- Support the new context menu API in web targets in the desktop mode #2224
Resources
- Added
JvmResourceReaderAPI and madeLocalResourceReaderpublic to allow providing a custom classloader for desktop target #5334
Navigation
- A new API was added to bind the browser navigation state with the
NavController-suspend fun NavController.bindToBrowserNavigation. And the existing functionsuspend fun Window.bindToNavigationis deprecated now #2189
Fixes
Multiple Platforms
- Fix extra draw invalidations during scrolling (1.8 regression) #2212
- (prerelease fix) Fix trigger of
Modifier.onFirstVisiblemodifier (added in Jetpack Compose1.9.0-alpha03) #2233
iOS
- Change the accessibility selection to the element that has most recently been focused on #2217
- Fix Full Keyboard Access on iOS 17 and lower #2216
- (prerelease fix) Fixed
Undefined symbols for architecture arm64: _kfun:androidx.compose.material3.adaptive.WindowAdaptiveInfo#2236 - Fixes the appearance of the keyboard when a pop-up or dialog on the background is dismissed #2240
Desktop
- Fixed the case when the IME's first event to a text field is to commit a composition #2210
- Elements marked with Modifier.semantics { hideFromAccessibility() } should now be correctly hidden from a11y #2204
- (prerelease fix) Fix focus switching for ComposePanel embedded in Swing UI #2232
- (prerelease fix) Fix Maven project doesn't work with 1.9.0-alpha03 #2248
Web
- Web Lifecycle triggers
START/STOPevents on thevisibilitychangecallback now #2219 - Lifecycle fix on iOS Safari: now touch events trigger
ON_RESUMEbecause Safari ignores interactions and doesn't request the focus #2219
Gradle Plugin
- Fix codesigning on macOS when the developer id contains non-ASCII characters. Note that this requires JDK 21 or later #5358
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.9.0-beta01. Based on Jetpack Compose libraries: -
Compose Material3 libraries
org.jetbrains.compose.material3:material3*:1.9.0-alpha04. Based on Jetpack Compose Material3 1.4.0-alpha17 -
Compose Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha04. Based on Jetpack Compose Material3 Adaptive 1.2.0-alpha08 -
Graphics-Shapes library
org.jetbrains.androidx.graphics:graphics-shapes:1.0.0-alpha09. Based on Jetpack Graphics-Shapes 1.0.1 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.9.1. Based on Jetpack Lifecycle 2.9.1 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.0-beta04. Based on Jetpack Navigation 2.9.1 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.3.1. Based on Jetpack Savedstate 1.3.0 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.4.0-alpha09. Based on Jetpack WindowManager 1.4.0
1.9.0-alpha03
Changes since 1.9.0-alpha02
Highlights
Web
- Added a
WebElementViewComposable function for embedding the absolutely positioned HTML content in Compose for web target. It's supported only when usingComposeViewportentry point and it's not supported withCanvasBasedWindow, which is deprecated now #2145
Migration Notes
Desktop
WindowandDialogWindowoverloads that create aComposeWindow/ComposeDialoghave been renamed toSwingWindow/SwingDialogand the old versions have been deprecated #2141- When the window is iconified, converting to/from screen coordinates (with e.g.
LayoutCoordinates.positionOnScreen()) will returnOffset.Unspecified#2163 - Deprecated experimental
Modifier.mouseClickableis removed. See https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-desktop-mouse-events.html for alternatives #2194
Web
- Setting
org.jetbrains.compose.experimental.jscanvas.enabled=trueis not required anymore when having a kotlin/js target #5340
Features
Multiple Platforms
- Support customizable shadows #2183
iOS
- Add support for
keepScreenOnmodifier #2180
Desktop
- Added
SwingFrameandSwingDialogcomposables that allow configuring the window/dialog before it is shown #2139 - Full
AnnotatedStringis available as a data flavor inClipEntry, instead of only its text #2092 - Add
RenderSettings.SwingGraphicsoption forComposePanel.renderSettingsargument #2071
Fixes
Multiple Platforms
- Fixed caret placement near glyphs if glyphs are compound symbols and part of them are non-spacing marks #2147
- (prerelease fix) Fix applying
colorFilterandblendModefromGraphicsLayerScopetoGraphicsLayer#2184
Desktop
- [Accessibility, macOS] Fixed VoiceOver to announce a Slider's value on every change #2152
- Return
Offset.Unspecifiedinstead of throwing an exception inLayoutCoordinates.localToScreenandLayoutCoordinates.screenToLocal#2160 - When the window moves or becomes iconified/de-iconified, all instances of
Modifier.onGloballyPositionedwill be called #2163 - Implemented a context menu for
BasicTextField(TextFieldState)#2168 - (prerelease fix)
Could not find org.jetbrains.androidx.window:window-core-desktop:1.4.0-alpha07when usingmaterial-adaptiveormaterial3-adaptive-navigation-suite#2179 SemanticsProperties.TextandSemanticsProperties.ContentDescriptionvalues will now be correctly concatenated whenModifier.semantics(mergeDescendants = true)is used #2202
Web
- Fixed an unexpected back gesture after a horizontal scroll #2186
- Mitigate a typing delay regression in Safari browsers #2195
Gradle Plugin
- Don't fail gradle sync if TargetFormat.AppImage is specified in
targetFormatson macOS #5332
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.9.0-alpha03. Based on Jetpack Compose libraries: -
Graphics-Shapes library
org.jetbrains.androidx.graphics:graphics-shapes:1.0.0-alpha09. Based on Jetpack Graphics-Shapes 1.0.1 -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.9.1. Based on Jetpack Lifecycle 2.9.1 -
Material3 Adaptive libraries
org.jetbrains.compose.material3.adaptive:adaptive*:1.2.0-alpha03. Based on Jetpack Material3 Adaptive 1.2.0-alpha07 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.9.0-beta03. Based on Jetpack Navigation 2.9.0 -
Savedstate library
org.jetbrains.androidx.savedstate:savedstate:1.3.1. Based on Jetpack Savedstate 1.3.0 -
WindowManager Core library
org.jetbrains.androidx.window:window-core:1.4.0-alpha08. Based on Jetpack WindowManager 1.4.0