Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 105 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,108 @@
# 1.11.0-alpha04 (March 2026)

_Changes since 1.11.0-alpha03_

## Breaking Changes

### Multiple Platforms

- To decouple common Compose graphics APIs from direct Skia/Skiko types, non-Android `Shader` is now a dedicated Compose wrapper type. Since it's not an ABI-compatible change, you might need to update some libraries that use this API to newer, compatible versions. Migration: [#2810](https://github.com/JetBrains/compose-multiplatform-core/pull/2810)
- If you pass raw Skia/Skiko shaders into Compose APIs, wrap with `SkShader.asComposeShader()`.
- If you need low-level Skia/Skiko access from Compose Shader, use `Shader.skiaShader` extension.

## Migration Notes

### Multiple Platforms

- `Key.Home` has been deprecated, as it has been incorrectly mapped to the keyboard "Home" key. Use `Key.MoveHome` instead [#2801](https://github.com/JetBrains/compose-multiplatform-core/pull/2801)
- `androidx.compose.ui.graphics.NativePaint` and `androidx.compose.ui.graphics.NativeCanvas` typealiases are deprecated, use direct references to native types instead [#2802](https://github.com/JetBrains/compose-multiplatform-core/pull/2802)
- `Paint.asFrameworkPaint()` was replaced with `Paint.skiaPaint` extension to avoid exposing a platform type into `commonMain` sourceset via `typealias` [#2802](https://github.com/JetBrains/compose-multiplatform-core/pull/2802)
- `RenderEffect.asSkiaImageFilter()` was replaced with `RenderEffect.skiaImageFilter` extension to avoid exposing a platform type into `commonMain` types [#2809](https://github.com/JetBrains/compose-multiplatform-core/pull/2809)
- Deprecate `Canvas.nativeCanvas` extension in favor of `Canvas.skiaCanvas` to avoid ambiguity [#2809](https://github.com/JetBrains/compose-multiplatform-core/pull/2809)

### Web

- Kotlin 2.3.10 or newer is required to use Compose Multiplatform with Kotlin/Wasm target [#2790](https://github.com/JetBrains/compose-multiplatform-core/pull/2790)

## Features

### Multiple Platforms

- Update skia to m144 [#2779](https://github.com/JetBrains/compose-multiplatform-core/pull/2779)

### iOS

- Adds an opt-in **Native iOS Text Input** mode for Compose `BasicTextField` (both `TextFieldValue` and `TextFieldState`) enabled via `PlatformImeOptions.usingNativeTextInput(enabled)` in iOS source set [#2602](https://github.com/JetBrains/compose-multiplatform-core/pull/2602)
- With the native iOS text input flag set to `true`, `BasicTextField` uses native UIKit editing and interaction, including: [#2602](https://github.com/JetBrains/compose-multiplatform-core/pull/2602)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would be the correct way to structure release notes in the original PR so that the format is kept and the link to the PR is at the end of the release note (or at least not at the end of the first line) ? @igordmn

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is the current format for multiline Release Notes - add the link in the end of the first line.

But it looks weird, agree - we can discuss changing it to something else.

- Native caret placement and movement (tap-to-place caret, spacebar caret movement, “ghost caret”)
- Native magnifier
- Native selection gestures (double-tap word selection, triple-tap paragraph selection) and iOS-like selection UI (region + handles)
- Native context menu behavior is supported for both the legacy and the new context menu (`isNewContextMenu = true`) configurations.
- Native context menu behavior when interacting with the caret, selection region, or selection handles
- Native text field context menu actions (e.g. Translate, Look Up, Share) (not available without this mode)
- Autocorrect / typo replacement support
- Autofill support for text fields, including filling from saved passwords one field at a time
- Support automatic sizing for Auto Layout–based views together with supporting explicit remeasurement via `rememberUIKitInteropRemeasureRequester()` + `Modifier.remeasureRequester(...)` with `UIKitInteropRemeasureRequester.requestRemeasure()` for propagating UIKit-side size changes to Compose [#2797](https://github.com/JetBrains/compose-multiplatform-core/pull/2797)

### Desktop

- New compile-time warnings for invalid ui/menu composable mixing that previously failed only at runtime [#2777](https://github.com/JetBrains/compose-multiplatform-core/pull/2777)

### Web

- Add `isClearFocusOnMouseDownEnabled` in `ComposeViewportConfiguration` to configure the focus behaviour on mouse press [#2781](https://github.com/JetBrains/compose-multiplatform-core/pull/2781)

### Gradle Plugin

- Add a compatibility check for skiko libraries to ensure consistency [#5541](https://github.com/JetBrains/compose-multiplatform/pull/5541)

## Fixes

### iOS

- Fix traffic lights overlapping content on iPad by adopting the new iOS 26 `LayoutRegion` API [#2555](https://github.com/JetBrains/compose-multiplatform-core/pull/2555)
- The haptic feedback when selecting text now works closer to the way it does with iOS text fields [#2786](https://github.com/JetBrains/compose-multiplatform-core/pull/2786)

### Desktop

- Correctly react to numpad arrows, `NumPadPageUp`, `NumPadPageDown`, `NumPadHome` and `NumPadEnd` keys in text fields [#2800](https://github.com/JetBrains/compose-multiplatform-core/pull/2800)
- _(prerelease fix)_ Fixed a11y crash when focused element is removed [#2803](https://github.com/JetBrains/compose-multiplatform-core/pull/2803)
- Match key modifiers exactly (without ignoring the state of other modifiers) when determining the corresponding text field action/command. This also fixes inputting 'a' and 'z' diacritics (e.g. 'ą' and 'ż') in text fields on Windows [#2804](https://github.com/JetBrains/compose-multiplatform-core/pull/2804)
- Fix the condition for hiding the tooltip in a `TooltipArea` on a pointer-exit event while the pointer is still inside the area [#2798](https://github.com/JetBrains/compose-multiplatform-core/pull/2798)
- _(prerelease fix)_ Fix black rectangle remaining after removing/hiding `SwingPanel` [#2821](https://github.com/JetBrains/compose-multiplatform-core/pull/2821)
- Some key shortcuts (e.g. shift-backspace, shift-delete on macOS) that previously didn't work in text fields now perform the correct action [#2827](https://github.com/JetBrains/compose-multiplatform-core/pull/2827)

### Web

- _(pre-release)_ Make canvas focused so it receives key events (e.g. ESC) [#2796](https://github.com/JetBrains/compose-multiplatform-core/pull/2796)
- Unified touch and pointer event handling for better consistency and performance on Web [#2799](https://github.com/JetBrains/compose-multiplatform-core/pull/2799)
- Fix Magic mouse behaviour in Safari and Firefox [#2811](https://github.com/JetBrains/compose-multiplatform-core/pull/2811)

## Components

### Gradle plugin

`org.jetbrains.compose` version `1.11.0-alpha04`

### Libraries

| Library group | Coordinates | Based on Jetpack |
|---------------|-------------|------------------|
| Runtime | `org.jetbrains.compose.runtime:runtime*:1.11.0-alpha04` | [Runtime 1.11.0-alpha06](https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.11.0-alpha06) |
| UI | `org.jetbrains.compose.ui:ui*:1.11.0-alpha04` | [UI 1.11.0-alpha06](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.11.0-alpha06) |
| Foundation | `org.jetbrains.compose.foundation:foundation*:1.11.0-alpha04` | [Foundation 1.11.0-alpha06](https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.11.0-alpha06) |
| Material | `org.jetbrains.compose.material:material*:1.11.0-alpha04` | [Material 1.11.0-alpha06](https://developer.android.com/jetpack/androidx/releases/compose-material#1.11.0-alpha06) |
| Material3 | `org.jetbrains.compose.material3:material3*:1.11.0-alpha04` | [Material3 1.5.0-alpha15](https://developer.android.com/jetpack/androidx/releases/compose-material3#1.5.0-alpha15) |
| Material3 Adaptive | `org.jetbrains.compose.material3.adaptive:adaptive*:1.3.0-alpha06` | [Material3 Adaptive 1.3.0-alpha09](https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.3.0-alpha09) |
| Lifecycle | `org.jetbrains.androidx.lifecycle:lifecycle-*:2.11.0-alpha01` | [Lifecycle 2.11.0-alpha01](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.11.0-alpha01) |
| Navigation | `org.jetbrains.androidx.navigation:navigation-*:2.9.2` | [Navigation 2.9.7](https://developer.android.com/jetpack/androidx/releases/navigation#2.9.7) |
| Navigation3 | `org.jetbrains.androidx.navigation3:navigation3-*:1.1.0-alpha04` | [Navigation3 1.1.0-alpha05](https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.0-alpha05) |
| Navigation Event | `org.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0-alpha01` | [Navigation Event 1.1.0-alpha01](https://developer.android.com/jetpack/androidx/releases/navigationevent#1.1.0-alpha01) |
| Savedstate | `org.jetbrains.androidx.savedstate:savedstate*:1.4.0` | [Savedstate 1.4.0](https://developer.android.com/jetpack/androidx/releases/savedstate#1.4.0) |
| WindowManager Core | `org.jetbrains.androidx.window:window-core:1.5.1` | [WindowManager 1.5.1](https://developer.android.com/jetpack/androidx/releases/window#1.5.1) |

---

# 1.10.2 (March 2026)

_Changes since 1.10.1_
Expand Down