Codenil

Compose Multiplatform 1.11.0: Enhanced iOS Features, Revamped Testing, and Web Scrolling Improvements

Published: 2026-05-16 22:10:55 | Category: Technology

Introduction

The latest update to Compose Multiplatform, version 1.11.0, has arrived with a host of improvements that refine the development experience across iOS, web, and testing workflows. This release focuses on delivering a more native feel on iOS, boosting rendering performance, introducing a more predictable testing framework, and smoothing out scrolling on web targets. Below, we dive into the key enhancements that make this update worth exploring.

Compose Multiplatform 1.11.0: Enhanced iOS Features, Revamped Testing, and Web Scrolling Improvements
Source: blog.jetbrains.com

Native Text Input on iOS #

One of the most requested features for Compose Multiplatform on iOS is a text input experience that mirrors the native UIKit components. In version 1.11.0, this becomes a reality with an experimental native text input implementation built atop UIView.

This new approach brings several benefits:

  • Precise caret movement that behaves as users expect from native iOS apps.
  • Native gestures and selection handles for intuitive text manipulation.
  • Familiar system context menu including Autofill, Translate, and Search options.

While the existing cross-platform text input remains the stable default, developers who prioritize an authentic iOS feel can opt into this feature. It's an ideal choice for applications where text field behavior is critical to user experience.

Concurrent Rendering Now Default #

Performance improvements continue with concurrent rendering, which was introduced as an opt-in feature in version 1.8.0. Starting with 1.11.0, it is enabled by default. Rendering tasks are automatically offloaded to a dedicated render thread, delivering smoother animations and faster UI updates without any additional configuration. This change means developers on all platforms benefit from improved frame rates and reduced jank, especially in complex compositions.

Compose UI Testing, Version 2 #

Testing Compose Multiplatform applications becomes more robust with the introduction of v2 ComposeUiTest APIs. These updates address common pain points in test predictability and customization.

StandardTestDispatcher by Default

The default dispatcher is now StandardTestDispatcher, which ensures coroutines run in the order they are queued. This makes tests more deterministic and mirrors production behavior more closely.

Compose Multiplatform 1.11.0: Enhanced iOS Features, Revamped Testing, and Web Scrolling Improvements
Source: blog.jetbrains.com

Custom Effect Context

The v2 APIs accept an effectContext parameter, allowing developers to pass a custom coroutine context into their compositions. This is particularly useful for overriding the motion duration scale or supplying a custom test dispatcher. Here's an example:

@OptIn(ExperimentalTestApi::class)
@Test
fun myTest() = runComposeUiTest(
    effectContext = motionDurationScale + StandardTestDispatcher()
) {
    setContent {
        MyComposable()
    }
    // assertions
}

With these enhancements, testing becomes more flexible and reliable. Note that the previous APIs (runComposeUiTest, runSkikoComposeUiTest, and runDesktopComposeUiTest) are now deprecated in favor of their v2 counterparts.

Smoother Scrolling on Web #

Scrolling performance on the web has historically lagged behind native platforms. Version 1.11.0 addresses this with a substantial rework of touch processing. The result is a scrolling experience on web targets that feels much closer to that on desktop or mobile. Developers can see this improvement in action in the latest web version of the KotlinConf App. For detailed technical notes and a full list of fixes, refer to issue CMP-9727.

Getting Started with 1.11.0

To take advantage of these improvements, update your Compose Multiplatform dependencies to version 1.11.0. The new features are ready for experimentation and integration into your projects. For the complete list of changes, consult the full release notes or the What's New document. As always, feedback is welcome to help shape future releases.