Skip to content

Releases: JetBrains/compose-multiplatform

1.10.0-alpha01

03 Sep 14:16
cf71d4c
Compare
Choose a tag to compare
1.10.0-alpha01 Pre-release
Pre-release

Highlights

Multiple Platforms

Breaking Changes

iOS

  • Align @Composable attribute in WindowInsets.Companion.captionBar to other platforms #2258

Migration Notes

Multiple Platforms

  • The pre‑1.7 workaround in the common PopupProperties/DialogProperties constructors (annotated Deprecated(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

  • Removed IntelliJ plugin sample, please refer to Jewel documentation instead #5368

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.isNewContextMenuEnabled flag in case of issues #2341
  • Provide public API for @ResourceContentHash annotation 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.inputView with PlatformImeOptions #2350
  • Add API to configure UIResponder.inputAccessoryView with PlatformImeOptions #2350

Desktop

  • Added modalityType parameter to DialogWindow() #2300
  • The Compose entry points on the desktop (ComposeWindow, ComposePanel and ImageComposeScene) now expose val semanticsOwners: Collection<SemanticsOwner> #2358

Fixes

Multiple Platforms

  • Fix application of baselineShift parameter in text layout #2304
  • Fix setting lineHeight to 0 in text layout #2304

iOS

  • Fix incorrect behavior of WindowInsets.displayCutout in different interface orientations #2301
  • Fix incorrect behavior of WindowInsets.displayCutout on iPad #2301
  • Fix the ability to use UIKitViewController inside Popups and Dialogs #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=WINDOW stealing focus #2285
  • Change ComposePanel.getPreferredSize to return 0x0 instead of null #2283
  • Request initial focus for focusable popups when used from ComposePanel in some cases #2289
  • In experimental compose.layers.type modes, fix Popup/Dialog container size calculation that prevents mouse interactions on base compose scene #2304
  • Fixed the sizing of unfocusable layers when compose.layers.type=COMPONENT is used #2305
  • SwingPanel no 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

1.9.0-rc01

28 Aug 13:18
a8774d3
Compare
Choose a tag to compare
1.9.0-rc01 Pre-release
Pre-release

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 runRelease task when navigation and obfuscate.set(true) are used #5384

Lifecycle

  • Fix dependency to Compose in lifecycle-viewmodel-compose module: 2.9.2 incorrectly refer Compose Multiplatform 1.9.0-beta03. Now it reverted back to 1.8.2 #2318

SavedState

  • Fix dependency to Compose in savedstate-compose module: 1.3.2 incorrectly refer Compose Multiplatform 1.9.0-beta03. Now it reverted back to 1.8.2 #2321

Dependencies

1.9.0-beta03

14 Aug 20:44
766ac55
Compare
Choose a tag to compare
1.9.0-beta03 Pre-release
Pre-release

Changes since 1.9.0-beta01

Breaking Changes

Multiple Platforms

  • (prerelease fix) All public APIs tagged with ExperimentalMaterial3ExpressiveApi or ExperimentalMaterial3ComponentOverrideApi have been removed, see Google Jetpack changelog. Please use the previous Material3 alpha version explicitly to continue enjoying these features: #2278

    implementation("org.jetbrains.compose.material3:material3:1.9.0-alpha04")
    

Migration Notes

Multiple Platforms

  • kotlinx-datetime is updated to 0.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

  • CanvasBasedWindow is deprecated, use ComposeViewport instead. Unlike CanvasBasedWindow, which expect as an input param the id to the HTMLCanvasElement that will be used for rendering, ComposeViewport one passes parentContainer (and corresponding HTML Canvas element will be created automatically). By default such container is document.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 composeCompatibilityBrowserDistribution task. 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
  • ExperimentalMaterial3ExpressiveApi annotation 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 SwingPanel children of ComposePanel, when the compose panel is itself removed from the hierarchy #2277
  • (prerelease fix) Fix DialogWindow causing 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

1.9.0-beta01

22 Jul 17:05
cbb9ec9
Compare
Choose a tag to compare
1.9.0-beta01 Pre-release
Pre-release

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.material3 now points to the latest stable Material3 version, 1.8.2. If the latest Material3 features are needed, please include it this way: #5360

    implementation("org.jetbrains.compose.material3:material3:1.9.0-alpha04")
    

iOS

  • Remove experimental attribute from UIKitInteropInteractionMode #2215

Web

  • fun ComposeViewport with viewportContainerId: String? parameter now can be called from a web-common fun 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 for androidx Preview 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, ComposeWindow and ComposeDialog now has savedState constructor parameter to restore previous state and saveState function 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 JvmResourceReader API and made LocalResourceReader public 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 function suspend fun Window.bindToNavigation is deprecated now #2189

Fixes

Multiple Platforms

  • Fix extra draw invalidations during scrolling (1.8 regression) #2212
  • (prerelease fix) Fix trigger of Modifier.onFirstVisible modifier (added in Jetpack Compose 1.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/STOP events on the visibilitychange callback now #2219
  • Lifecycle fix on iOS Safari: now touch events trigger ON_RESUME because 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

1.9.0-alpha03

04 Jul 14:10
761368d
Compare
Choose a tag to compare
1.9.0-alpha03 Pre-release
Pre-release

Changes since 1.9.0-alpha02

Highlights

Web

  • Added a WebElementView Composable function for embedding the absolutely positioned HTML content in Compose for web target. It's supported only when using ComposeViewport entry point and it's not supported with CanvasBasedWindow, which is deprecated now #2145

Migration Notes

Desktop

Web

  • Setting org.jetbrains.compose.experimental.jscanvas.enabled=true is not required anymore when having a kotlin/js target #5340

Features

Multiple Platforms

  • Support customizable shadows #2183

iOS

  • Add support for keepScreenOn modifier #2180

Desktop

  • Added SwingFrame and SwingDialog composables that allow configuring the window/dialog before it is shown #2139
  • Full AnnotatedString is available as a data flavor in ClipEntry, instead of only its text #2092
  • Add RenderSettings.SwingGraphics option for ComposePanel.renderSettings argument #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 colorFilter and blendMode from GraphicsLayerScope to GraphicsLayer #2184

Desktop

  • [Accessibility, macOS] Fixed VoiceOver to announce a Slider's value on every change #2152
  • Return Offset.Unspecified instead of throwing an exception in LayoutCoordinates.localToScreen and LayoutCoordinates.screenToLocal #2160
  • When the window moves or becomes iconified/de-iconified, all instances of Modifier.onGloballyPositioned will 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-alpha07 when using material-adaptive or material3-adaptive-navigation-suite #2179
  • SemanticsProperties.Text and SemanticsProperties.ContentDescription values will now be correctly concatenated when Modifier.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 targetFormats on macOS #5332

Dependencies

1.8.2

17 Jun 17:41
a149d0f
Compare
Choose a tag to compare

Changes since 1.8.1

Fixes

Multiple Platforms

  • Fixed TextField(TextFieldValue) when used with a visual transformation with a non-identity offset mapping (potentially even crashing) #2130

  • Fixed a memory leak and performance degradation when ComposeUiFlags.isRectTrackingEnabled set to true (by default) #2123

  • Fixed caret placement near glyphs if glyphs are compound symbols and part of them are non-spacing marks #2155

  • Support Preview parameters for Previews in common source sets in IJ and AS. Note: IDEs also need to implement support on their end. Please check the respective IDE release notes to confirm this is supported #5323

    Example usage:

    import androidx.compose.runtime.Composable
    import org.jetbrains.compose.ui.tooling.preview.Preview
    import org.jetbrains.compose.ui.tooling.preview.PreviewParameter
    import org.jetbrains.compose.ui.tooling.preview.PreviewParameterProvider
    
    class MyPreviewParameterProvider : PreviewParameterProvider<String> {
      override val values = sequenceOf("Hello, Compose!", "Hello, World!")
    }
    
    /**
     * This function will generate two preview images with different texts.
     */
    @Preview
    @Composable
    fun MyPreview(@PreviewParameter(MyPreviewParameterProvider::class) text: String) {
      Text(text)
    }
    

Desktop

  • Fix the positioning of the IME popup being too far away from the text, on screens with density greater than 1.0 #2158

Navigation

  • Fix the browser navigation integration problem due encoded routes #2143
  • Fix a crash on iOS when a NavHost is located in a scrollable container #2146

Dependencies

1.9.0-alpha02

06 Jun 17:21
ab2e690
Compare
Choose a tag to compare
1.9.0-alpha02 Pre-release
Pre-release

Changes since 1.8.1

Known issues

Desktop

  • Could not find org.jetbrains.androidx.window:window-core-desktop:1.4.0-alpha07 when using material-adaptive or material3-adaptive-navigation-suite. YouTrack issue. Workaround is to exclude one dependency and include another:
    // if you have material3AdaptiveNavigationSuite dependency
    implementation(compose.material3AdaptiveNavigationSuite) {
        exclude(group = "org.jetbrains.androidx.window")
    }

    // if you have org.jetbrains.compose.material3.adaptive dependency
    implementation("org.jetbrains.compose.material3.adaptive:adaptive:1.2.0-alpha02") {
        exclude(group = "org.jetbrains.androidx.window")
    }

    implementation("androidx.window:window-core-jvm:1.4.0")

Highlights

Multiple Platforms

  • material3 library now includes new experimental MaterialExpressiveTheme #2127

Migration Notes

Gradle Plugin

  • The Compose Gradle plugin requires the Kotlin Gradle plugin version 2.+ now. Old org.jetbrains.compose.compiler is not supported anymore and the API to configure it was removed #5283

Features

Multiple Platforms

  • Adopted a change in ComposeUiTest API. The block in runComposeUiTest is suspend now. It allows to call awaitIdle and other suspend functions. It ensures a correct execution of a test on all platforms. See the web specifics in kotlinx.coroutines.test.runTest documentation #2066

iOS

  • Add support for native IME configuration with PlatformImeOptions #2108

Desktop

  • Add accessibility role for Switch, reporting it as a checkbox #2136

Fixes

Multiple Platforms

  • Fixed TextField(TextFieldValue) when used with a visual transformation with a non-identity offset mapping (potentially even crashing) #2117
  • Fixed a memory leak and performance degradation when ComposeUiFlags.isRectTrackingEnabled set to true (default) #2112
  • Support Preview parameters for Previews in common source sets in IJ and AS. Note: IDEs also need to implement support on their end. Please check the respective IDE release notes to confirm this is supported #5319
    Example usage:
    import androidx.compose.runtime.Composable
    import org.jetbrains.compose.ui.tooling.preview.Preview
    import org.jetbrains.compose.ui.tooling.preview.PreviewParameter
    import org.jetbrains.compose.ui.tooling.preview.PreviewParameterProvider
    
    class MyPreviewParameterProvider : PreviewParameterProvider<String> {
      override val values = sequenceOf("Hello, Compose!", "Hello, World!")
    }
    
    /**
     * This function will generate two preview images with different texts
     */
    @Preview
    @Composable
    fun MyPreview(@PreviewParameter(MyPreviewParameterProvider::class) text: String) {
      Text(text)
    }

iOS

  • Fix issue where keyboard would appear after second tap when text input session was intercepted #2049

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 unfocused, then focused again while there's an active composition in the text field (after pressing e.g. backspace) #2026
  • [macOS] Fix showing the input method toolbar before any text field becomes focused (on JBR only; other runtimes continue to be buggy) #2047
  • Improved performance for ComposePanel with System.setProperty("compose.swing.render.on.graphics", "true") #2097
  • Fix the positioning of the IME popup being too far away from the text, on screens with density greater than 1 #2118
  • Fixed the position of the IME popup, which was below the previous, rather than the current, cursor position #2122

Dependencies

1.8.1

20 May 12:01
afe6a5b
Compare
Choose a tag to compare

Changes since 1.8.0

Features

Resources

  • Now a Compose library with resources may be built and used as XCFramework (it requires Kotlin Gradle plugin 2.2 or higher) #5294
  • Gradle Plugin DSL to change the generated Res class name #5296

Fixes

Multiple Platforms

  • Fix incorrect pointer position calculation with rotation around unspecified pivot #2082

iOS

  • Fix dialogs after modal view controller presentation #2085
  • Fix issue where androidx.compose.material3.ModalBottomSheet closes after any tap #2086
  • Fix context menu appearance after triple-tap #2087
  • Fix a memory leak in ComposeUIViewController when text input starts #2088
  • Use the cross-fade animation effect when rotating the screen with interop views #2101
  • Show an error message when UIKitViewController inside Popup or Dialog #2102
  • Fix an issue where the keyboard would appear after the second tap when the text input session was intercepted #2103

Desktop

  • [Linux] Fix svgPainter doesn't show any images #2096
  • Fix deadlock between BroadcastFrameClock.lock and Recomposer.stateLock #2098
  • Fix "Serializer for class is not found" using androidx.navigation and running ./gradlew runRelease #5314
  • kotlinx.serialization ProGuard rules are bundled in the Compose Gradle plugin #5314

Web

  • Fixed the positioning and the dimensions of the backing text input (HTML element). The bug used to lead to unexpected scrolls on the page due to the browser trying to bring the HTML element into a view #2081

Resources

  • Fix IDE highlighting/resolution when a generated file with resource accessors is too big #5298

Dependencies

1.8.0

06 May 16:51
e7e8e12
Compare
Choose a tag to compare

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 #1778
  • Implement multiplatform BackHandler and PredictiveBackHandler. And use them in material3 widgets and androidx-navigation library #1771

iOS

  • Remove experimental flag from fun enableTraceOSLog() #1652

Web

  • Improves text input support in Safari on mobile and desktop #1941
  • Correct certain text input scenarios on Web targets #1941

Resources

  • Add FontVariation.Settings support to the resources library #5183

Breaking Changes

Tests

  • runOnIdle will now execute action on the UI thread #1601
  • runOnIdle will no longer call waitForIdle after executing the action #1601
  • Advancing mainClock such that it doesn't reach the next frame, will no longer cause a recomposition #1618
  • 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 #1822

Multiple Platforms

  • Tests that relied on waitForIdle, awaitIdle or runOnIdle (whether explicit or implicit) executing delay-ed coroutines will no longer work correctly. To fix this advance the test time via mainClock manually, as needed #1550
  • Tests that advance the test clock (via mainClock.advanceTimeBy) may see different behavior with regards to the amount and timing of recomposition, layout, drawing and effects #1550
  • Multiplatform lifecycle was migrated from a internal core-bundle module to the androidx SavedState. Libraries that use org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate or org.jetbrains.androidx.savedstate:savedstate should migrate to the latest version #1850
  • A custom implementation for deprecated LocalTextInputService is no longer supported #1974

iOS

  • Update AccessibilitySyncOptions and remove AccessibilityDebugLogger from public API #1604
  • Remove obsolete Canvas Layers mode on iOS #1680
  • Add Composable annotation to the WindowInsets.Companion.waterfall getter to match the expected API #1919

Desktop

  • Deprecated/experimental Modifier.onExternalDrag has been removed - common Modifier.dragAndDropTarget API should be used instead #1606

Migration Notes

Multiple Platforms

  • Google Maven now contains some artifacts for all Kotlin targets including Wasm and JS. Compose Multiplatform now depends on those artifacts and user projects might need to add google() repo to repositories {...} block if it is not there yet #1819
  • material/material3 libraries no longer add a dependency to material-icons-core so if your project relied on that, you will have to explicitly add that dependency in your build.gradle[.kts] files: #2030
    implementation("org.jetbrains.compose.material:material-icons-core:1.7.3")
    

iOS

  • LocalUIViewController moved to the androidx.compose.ui.uikit module #1608
  • ComposeUIViewControllerDelegate marked as deprecated. Use the parent view controller to override the methods of the UIViewController class #1651
  • Experimental classes CupertinoScrollDecayAnimationSpec and CupertinoOverscrollEffect are removed from public API #1806

Gradle Plugin

  • The Compose Gradle Plugin requires Kotlin Gradle Plugin 2.+ version now. Old org.jetbrains.compose.compiler is not supported anymore and the API to configure it was removed #5293

Features

Multiple Platforms

  • Support configurable vertical text centering via LineHeightStyle.Alignment #1569
  • Support Variable Fonts In All Platforms #1623
  • Update skia to m132 #1823
  • Adopt a new Clipboard interface with suspend functions, which work correctly on all targets including Web. The ClipboardManager was deprecated because it was not possible to correctly implement it for Web #1796

iOS

  • Add localised string for VoiceOver accessibility support #1441
  • Support state announcements for scrollable lists in VoiceOver #1644
  • Support for accessibility gestures for left-to-right languages #1663
  • (Experimental) ComposeUIViewControllerConfiguration.useSeparateRenderThreadWhenPossible flag that allows offloading GPU commands encoding to the separate thread and improving performance #1694
  • Initial Drag&Drop support #1690
  • Align Compose components semantics with UIKit views accessibility #1719
  • Accessibility navigation uses safe area to calculate when focused rect is out of bounds #1745
  • Support VoiceControl on iOS #1780
  • AccessibilitySyncOptions removed. The accessibility tree is built on demand #1780
  • Calculate the order and location of semantic elements in the same way as it's done on Android #1809
  • Support UIAccessibilityContainerTypeSemanticGroup for traversal groups #1809
  • Compose works correctly with nested UIScrollViews, as well as within UIScrollViews #1818
  • Added the ability to close modal Compose view controllers (with non-scrollable content on them) with a swipe gesture #1818
  • Support new haptic feedback types #1831
  • Support for focusable nodes when Full Keyboard Access is enabled on iOS #1825
  • Floating cursor support for BasicTextField(TextFieldState) #1598
  • Add support for Bold Text accessibility setting #1846
  • Bhojpuri language support for VoiceOver #1838
  • Add support for Reduce Motion accessibility setting #1847
  • Default androidx.navigation transition animation on iOS is as close as possible to the iOS back gesture #1861
  • Support accessibility text input #1875
  • Support text input for UI Tests #1875
  • Accessibility: added ability to traverse nodes within a scrollable container [#1837](https://github.com/JetBrains/compose-multiplatform-c...
Read more

1.8.0-rc01

24 Apr 15:58
e7e8e12
Compare
Choose a tag to compare
1.8.0-rc01 Pre-release
Pre-release

Changes since 1.8.0-beta02

Highlights

Web

  • Improves text input support in Safari on mobile and desktop #1941
  • Correct certain text input scenarios on Web targets #1941
    New WebTextInputService seeks to achieve the following goals:
  1. Add support to Safari (which happens to have its own flow of input events that are inconsistent with other browsers)
  2. Correct behavior for composition and accent dialogue scenarios
  3. Introduce some changes that we will use for improving accessibility

Breaking Changes

Multiple Platforms

  • A custom implementation for deprecated LocalTextInputService is no longer supported #1974

Migration Notes

Multiple Platforms

  • material/material3 libraries no longer add a dependency to material-icons-core so if your project relied on that, you will have to explicitly add that dependency in your build.gradle[.kts] files: #2025, #2030
implementation("org.jetbrains.compose.material:material-icons-core:1.7.3")

Gradle Plugin

  • The Compose Gradle Plugin requires Kotlin Gradle Plugin 2.+ version now. Old org.jetbrains.compose.compiler is not supported anymore and the API to configure it was removed #5293

Lifecycle

  • (prerelease fix) Remove deprecated AbstractSavedStateViewModelFactory from common code #1976

Features

Desktop

  • The default ProGuard version is set to 7.7.0 #5279
    • If there are any new errors in the release build, update the ProGuard rules
    • A usual workaround is to add -keep class for the associated with error class in "Location:"
    • If the error contains androidx. package, it might a Compose bug, please report in https://youtrack.jetbrains.com/issues/CMP. The -keep class workaround should also work in this case
  • (prerelease fix) ./gradlew runRelease doesn't crash with java.lang.VerifyError #5279

Fixes

Multiple Platforms

  • (prerelease fix) org.jetbrains.compose.material3:material3-adaptive-navigation-suite, org.jetbrains.compose.material3:material3-window-size-class are reverted to the 1.3.1 state. They will be promoted to 1.4 in Compose Multiplatform 1.9 with material3 #1995
  • Fix InterceptPlatformTextInput for the legacy TextField #1974

iOS

  • (prerelease fix) Fix Text Menu placement for TextField(TextFieldState) #1972
  • (prerelease fix) Fix Full Keyboard Access focus when Compose is located inside SwiftUI view #1975
  • (prerelease fix) Fix an issue where traversal group nodes with test tag are missing in the accessibility tree #1977
  • Fix composite input in BasicTextField(TextFieldState) #1984
  • Fixes an issue where the accessibility engine could leave a scrollable list without reading it to the end #1986
  • Fix Accessibility navigation through traversal groups in Container mode #1987
  • Fix focus for items within dialogs when full keyboard access is enabled #1990
  • (prerelease fix) Fixed a white scene background on iOS when a dark theme is activated #1989
  • Fix gesture handling for third party interop views #1993
  • Fix overscroll touches assertion when back handler is involved #2017
  • Fixed incorrect selection and navigation by arrow keys from a hardware keyboard in BasicTextField(TextFieldState) #2018
  • Fix back gesture after modal popup appearance #2019
  • Fixed the behavior of a context menu in the text fields inside modal screens #2028
  • (prerelease fix) Change runtime experimental annotations to proper "ui" experimental annotations for a few fields inside ComposeUIViewControllerConfiguration #2034
  • (prerelease fix) Fix back gesture handling after modal view controller dismissal #2048
  • (prerelease fix) Fix overscroll when RTL is enabled #2054

Desktop

  • (prerelease fix) [macOS] Fixed accented character input via long press #1980

Navigation

  • (prerelease fix) Fix custom navigation animation in nested graphs in non-android targets #1982

Dependencies