Compose Multiplatform 1.11.0: Enhanced iOS Features, Revamped Testing, and Web Scrolling Improvements
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.

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.

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.
Related Articles
- Apple Drops Safari Technology Preview 240 With Major CSS Revert-Rule Support and Critical Media Bug Fixes
- Labyrinth 1.1: How Meta is Boosting Reliability of Encrypted Backups
- A Heartfelt Thank You to the Stack Overflow Community and Reflections on Life, Loss, and AI
- Upgrading to React Native 0.83: Unlocking React 19.2 and Enhanced DevTools
- US Agency Expands Pre-Release AI Safety Testing to Include Major Tech Firms
- Understanding Kubernetes SELinux Volume Label Changes: What’s New and How to Prepare
- Top Mobile Threats for Apple Devices in the Workplace: Q&A
- Apple Rolls Out Safari Technology Preview 241 with Major Accessibility Overhauls and CSS Upgrades