Releases: JetBrains/compose-multiplatform
Releases · JetBrains/compose-multiplatform
1.6.10-dev1590
v1.6.10-dev1590 Delete the experimental mark from the stable resources library API (#…
1.6.10-dev1584
Hot fix integration with cocoapods (#4628) Get the cocoapods extension from the kotlin instead project object and configure task dependency lazy
1.6.10-beta01
Changes since 1.6.2
Highlights
- Experimental multiplatform support of
Lifecycle
andViewModel
. 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-Beta05
or higher is required)
Known issues
⚠️ Crash at startup on pre-iOS 17 devices due to loadingUITextLoupeSession
lifecycle-runtime
breaks Compose UI compatibility with Java 11 on desktop, it requires Java 17 or above now.inline fun <reified VM> viewModel(...)
is not available from common due to compiler bug. Please usefun <VM> viewModel(KClass, ...)
overload instead- Compose Multiplatform doesn't provide default
ViewModelStoreOwner
yet. For usingViewModel
s outside ofNavHost
you need to provide custom store owner viaLocalViewModelStoreOwner
Features
Multiple Platforms
- Add font rasterization settings in paragraph style
- Localize internal strings in
ui
,material
andmaterial3
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
HapticFeedback
on iOS - iOS support
LiveRegion
semantics in a11y
Desktop
- Add an
alwaysOnTop
flag 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
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
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
NaN
font 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
Popup
andDesktopMenu
- 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
iOS
- Fix keyboard disappear on IME action
- Fix nested scroll when
Pager
involved 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
Desktop
- Fix nested scrolling on mouse wheel
- Trigger fling callbacks on mouse wheel scroll (fixes
Pager
and lazy column/row spanning) - Fix
Pager
direction 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
WINDOW
layer fixes: #1181, #1185, #1187, #1189- Fix crash when we resize
ComposePanel
after 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
SelectionContainer
to start when drag starts below the bounds of the visible text - Fix a crash on Windows without
dcomp.dll
Web
- Implement actual
fun isCopyKeyEvent
- Fix metadata compilation
- Support
sendKey
test utility function on wasm target - Send correct window sized on resize
- Dispose all listened events alongside with the application being disposed
- Modify
buttonFlags
only onPress
andRelease
- Fix keyboard mappings
- Correct density rounding in
ComposeWindow::resize
Resources
- [Fix resource accessors compilation when there are huge number of resource...
1.6.10-dev1583
v1.6.10-dev1583 [resources] Support SVG drawables for non android platforms (#4605)
1.6.10-dev1580
Option to pack jars as uber JAR, support Proguard for uber JAR (#4136) ## Proposed changes 1. Added support to join JARs to the uber JAR with ProGuard, disabled by default: ``` compose.desktop { application { buildTypes.release.proguard { joinOutputJars.set(true) } } } ``` 2. All 'release' tasks now really depend on ProGuard, as stated in [tutorial](https://github.com/JetBrains/compose-multiplatform/tree/master/tutorials/Native_distributions_and_local_execution#minification--obfuscation). ## Testing - A new auto test - Manual: 1. Test on Windows/macOs/Linux 2. Test the new Gradle parameter `joinOutputJars`: ``` compose.desktop { application { buildTypes.release.proguard { joinOutputJars.set(true) } } } ``` `false` (by default) should generate multiple jars (except for `package*UberJarForCurrentOS`) `true` should generate a single jar in a result distribution 3. Test debug tasks: ``` run runDistributable createDistributable packageUberJarForCurrentOS ``` 4. Test release tasks: ``` runRelease runReleaseDistributable createReleaseDistributable packageReleaseUberJarForCurrentOS ``` The jars should be reduced in size (because Proguard is enabled in the release mode) This should be test by QA. ## Issues fixed Fixes https://github.com/JetBrains/compose-multiplatform/issues/4129 --------- Co-authored-by: Igor Demin <[email protected]>
1.6.10-dev1578
v1.6.10-dev1578 Compose 1.6.2
1.6.10-dev1575
Support source set's hierarchy for compose resources (#4589) Compose resources can be located in different KMP source sets in the `composeResources` directory. For each resource an accessor will be generated in the suitable kotlin source set.
1.6.2
Changes since 1.6.1
Features
Common
Fixes
iOS, Desktop, Web
- Propagate composition locals to layers in the (re)composition phase
- Add transactions to
FocusOwnerImpl
takeFocus
andreleaseFocus
to prevent crash when a window is re-shown - Fix crash and allow selection in
SelectionContainer
to start when drag starts below the bounds of the visible text
iOS
Dependencies
This version of Compose Multiplatform is based on the next Jetpack Compose libraries:
1.6.10-dev1571
v1.6.10-dev1571 [gradle] Fix test data
1.6.10-dev1561
Make desktop preview task fully configuration cache compliant (#4410) The issue was in a case where there wasn't a direct dependency on the skiko artifact, the task would attempt to get one at task execution time. This moves that to task configuration time.