JetBrains: Compose Multiplatform 1.11.0 — нативный текст-ввод на iOS, v2 UI-тестирование
Источник: https://blog.jetbrains.com/kotlin/2026/05/compose-multiplatform-1-11-0
Краткое содержание
Релиз CMP 1.11.0. Главное:
- Native text input на iOS — экспериментальная реализация поверх UIView: точное движение каретки, нативные жесты выделения, системное контекстное меню (Autofill, Translate, Search). Стандартный кросс-платформенный text input остаётся по умолчанию.
- Concurrent rendering на iOS, бывший opt-in с 1.8.0, теперь включён по умолчанию: рендеринг выполняется на отдельном render-thread.
- Compose UI testing v2: новый default-dispatcher —
StandardTestDispatcher, корутины выполняются в порядке очереди; v2 принимаютeffectContextдля пробрасывания custom-контекста в композиции. Прежние API (runComposeUiTest,runSkikoComposeUiTest,runDesktopComposeUiTest) deprecated. - Web: переработана обработка касаний, скроллинг приближен к нативным платформам (см. CMP-9727 и обновлённый KotlinConf App).
@OptIn(ExperimentalTestApi::class)
@Test
fun myTest() = runComposeUiTest(
effectContext = motionDurationScale + StandardTestDispatcher()
) {
setContent { MyComposable() }
// assertions
}
Значимость
Существенный шаг по приближению Compose на iOS к нативному UX и по выравниванию web-сценария по скроллингу. Для Compose-команд — повод обновить тесты на v2 API. Политической нагрузки нет.
🧾 Транскрипт (формат)
Compose Multiplatform 1.11.0 Is Now Available Source: https://blog.jetbrains.com/kotlin/2026/05/compose-multiplatform-1-11-0
A new release of Compose Multiplatform has landed, with improvements to the iOS and web experience and a refreshed approach to UI testing. Read on for the highlights, or for the complete list of changes, check out the What’s New.
Get Started with Compose Multiplatform
Native text input on iOS If you’ve wanted text fields in your Compose iOS app to feel a little more native, this one’s for you. Compose Multiplatform 1.11.0 introduces an experimental native text input implementation built on top of UIView.
This makes caret movement more precise, offers native gestures and selection handles, and provides the familiar system context menu – including Autofill, Translate, and Search. The existing text input remains the stable, cross-platform choice, but if you want the most native feel on iOS, you can now opt in.
Another iOS improvement: Concurrent rendering, introduced as an opt-in feature in version 1.8.0, is now enabled by default. Rendering tasks are now offloaded to a dedicated render thread out of the box, so your apps get the performance benefits without any extra configuration.
Compose UI testing, v2 Testing on non-Android targets gets an upgrade with support for the v2 ComposeUiTest APIs. The default dispatcher is now StandardTestDispatcher, so coroutines run in the order in which they’re queued. This makes tests more predictable and brings them closer to production behavior.
The v2 APIs also accept an effectContext parameter for passing a custom coroutine context into your compositions – useful for things like overriding the motion duration scale or supplying your own test dispatcher:
@OptIn(ExperimentalTestApi::class) @Test fun myTest() = runComposeUiTest( effectContext = motionDurationScale + StandardTestDispatcher() ) { setContent { MyComposable() } // assertions } The previous APIs (runComposeUiTest, runSkikoComposeUiTest, and runDesktopComposeUiTest) are now deprecated in favor of their v2 counterparts.
Smoother scrolling on web targets Scrolling performance on Compose web has been trailing that of native targets for a while. With 1.11.0, touch processing has been substantially reworked, and scrolling in Compose web apps now feels much closer to what you get on other platforms.
You can see it in action in the latest web version of the KotlinConf App. For all the gritty details, as well as demos and the list of fixes, head over to CMP-9727.
That’s the overview of 1.11.0. Update your dependencies, try out the new APIs, and let us know what you think. For everything that didn’t make it into this post, check out the full release notes or What’s New.