1.6.10
Changes since 1.6.2
Highlights
- Experimental multiplatform support of
LifecycleandViewModel. See documentation for details - Experimental multiplatform support of Jetpack Navigation. See documentation for details or check out the nav_cupcake project which was converted from the Navigate between screens with Compose Android codelab
- Support multi-module projects and libraries publication with Compose resources (Kotlin
2.0.0-Beta05or higher is required)
Breaking changes
- Since Kotlin
2.0-RC2, the additionalorg.jetbrains.kotlin.plugin.composeGradle plugin is required. See the migration guide
Features
Multiple Platforms
- Add font rasterization settings in paragraph style
- Localize internal strings in
ui,materialandmaterial3
iOS
- Magnifier for iOS 17+
- Support software keyboard inset in
Dialog - iOS a11y dialogues and popups integration
- OS logging integrated with
trace - Support accessibility scroll
- Improve iOS a11y sync behavior
- Add throttle for text context menu updates
- Support a11y for interop views
- Support
HapticFeedbackon iOS - iOS support
LiveRegionsemantics in a11y
Desktop
- Add an
alwaysOnTopflag toDialogWindow - Basic support of
BasicTextField2: #1227, #1264 full support and support for other platforms is planned for 1.7.0
Web
- Listen to browser clipboard events and bind them with Compose TextFieldSelectionManager and SelectionManager
- Introduce ComposeViewport function that renders content in parent container
- Introduce minimal virtual keyboard support
- Basic IME keyboard support
- Some experimental Compose Multiplatform Gradle plugin APIs for web app configuration were deprecated. Their usage is not required anymore.
Resources
- Support three letters locales
- Add DSL to configure compose resources
- Support plural string resource
- Add option to disable compose resources generation
- XML resource optimizations
- Get resource files as URI
- Support source set's hierarchy for compose resources
- Support SVG drawables for non android platforms
- Delete the experimental mark from the stable resources library API
- Add functions to retrieve bytes from drawable or font resources
- To disable the Compose Resources publication and the multimodule support in cases of problems add
org.jetbrains.compose.resources.multimodule.disable=trueto the rootgradle.properties
Gradle Plugin
- Add possibility to modify the macOS minimum version
- Make desktop preview task fully configuration cache compliant
- Option to pack jars as uber JAR, support Proguard for uber JAR
Fixes
Multiple Platforms
- Fix
NaNfont metrics by initializing typeface forTextStyle - Fix render order of interop views
- Reimplement SortedSet for JS/Native to improve performance
- Allow drawing outside of platform layers
- Prevent a few unnecessary re-compositions in
PopupandDesktopMenu - Propagate composition locals to layers in the (re)composition phase
- Move the effects and synthetic events dispatching to after the draw phase in the render loop
- Fix Kotlin/Native can't use
T::classin inline function of@Composable - Fix missing recomposition after showing
Dialog
iOS
- Fix keyboard disappear on IME action
- Fix nested scroll when
Pagerinvolved in scrolling process - Fix a11y wrong bounds calculation
- Delay tap indication inside scroll
- Fix keyboard opening when scrolling begins within a
TextField - Fix IME window insets and view offset when keyboard appears
- Fix animation frozen after app went background
- Fixed appearing of text editing menu (#1269, #1293)
- Fix content rect calculation in
SelectionManager
Desktop
- Fix nested scrolling on mouse wheel
- Trigger fling callbacks on mouse wheel scroll (fixes
Pagerand lazy column/row spanning) - Fix
Pagerdirection detection for mouse wheel - Fix missing clicks inside
SelectionContainer - Fix clipping bounds of
SwingPanel - Locale-aware date formatting for desktop
- Pass the id of the node whose layout changed to accessibility controllers
WINDOWlayer fixes: #1181, #1185, #1187, #1189- Fix crash when we resize
ComposePanelafter re-adding it to the hierarchy - Fix propagation of
LocalLocalization - Re-show the tooltip on mouse-move following a click in TooltipArea
- Fix the direction of scrolling when pressing on the scrollbar track with
reverseLayout=true - Fix crash and allow selection in
SelectionContainerto start when drag starts below the bounds of the visible text - Fix a crash on Windows without
dcomp.dll - Fix crash when creating SwingRedrawer on DirectX
- Option to not throw
RenderExceptionwhen use OpenGL on macOS - Sync all AccessibilityControllers when an a11y query is received
- Fix crash when modifying Compose state from a non-UI thread
- Close
Popup/Dialogby clicking any mouse button outside
Web
- Implement actual
fun isCopyKeyEvent - Fix metadata compilation
- Support
sendKeytest utility function on wasm target - Send correct window sized on resize
- Dispose all listened events alongside with the application being disposed
- Modify
buttonFlagsonly onPressandRelease - Fix keyboard mappings
- Correct density rounding in
ComposeWindow::resize - Fix
MouseEventtoPointerButtonmapping - Correct virtual keyboard mode resolution
- Fix browser clipboard events handling on Windows
- Rename
viewportContainertoviewportContainerIdparameter inComposeViewport
Resources
- Fix resource accessors compilation when there are huge number of resource files
- Init resource accessors lazily and in external function to avoid
MethodTooLargeException - Fix
Resclass generation if the library is declared as 'api' - Fix resource packaging in APK when 'build' task is used with AGP 8.2+
- Use first of preferred locales instead of a current on iOS
- Fix
readResourceBytesfunction on Android if font is located under qualified directory - Fix android fonts in APKs
- Handle special characters for quantity strings
- Select default resource if there are no exact language+region or default language match
- Add validation checks on invalid XML or item type
Gradle plugin
Dependencies
-
Gradle Plugin
org.jetbrains.compose, version1.6.10. Based on Jetpack Compose libraries: -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.8.0. Based on Jetpack Lifecycle 2.8.0 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.7.0-alpha07. Based on Jetpack Navigation 2.7.7