Compose Multiplatform 1.11.0: Enhanced iOS Experience and Revamped UI Testing

What’s New in Compose Multiplatform 1.11.0

The latest release of Compose Multiplatform brings a host of refinements that improve the development experience across iOS, web, and testing workflows. From more natural text input on iPhones to smoother scrolling in browsers, version 1.11.0 focuses on making your apps feel right at home on every platform. Let’s dive into the top changes.

Compose Multiplatform 1.11.0: Enhanced iOS Experience and Revamped UI Testing
Source: blog.jetbrains.com

Native Text Input on iOS

If you’ve ever wanted text fields in your Compose iOS app to behave exactly like those in native SwiftUI or UIKit apps, this update delivers. Compose Multiplatform 1.11.0 introduces an experimental native text input implementation built on top of UIView. This means more precise caret movement, native gesture support, selection handles that feel familiar, and access to the system context menu—including Autofill, Translate, and Search options that users expect.

The existing text input remains the stable, cross-platform default, but you can now opt into this native layer for a truly iOS-authentic experience. To enable it, simply flip the experimental flag in your project setup. This is particularly valuable for apps that rely heavily on text entry and want to match the platform’s look and feel exactly.

Concurrent Rendering Now Default

Another significant iOS improvement: concurrent rendering, which was introduced as an opt-in feature in version 1.8.0, is now enabled by default. Rendering tasks are automatically offloaded to a dedicated render thread without any extra configuration. This change reduces jank and improves frame rates, especially in UI-heavy scenarios. Your apps get a performance boost out of the box—no code changes required.

Revamped UI Testing with v2 APIs

Testing Composable UIs on non-Android targets has always been possible, but the new v2 ComposeUiTest APIs make it more predictable and powerful. The default dispatcher has switched to StandardTestDispatcher, which means coroutines run in the order they’re queued. This results in tests that behave more like production code and are easier to reason about.

Additionally, the v2 APIs accept an effectContext parameter, allowing you to pass a custom coroutine context into your compositions. For example, you can override the motion duration scale or supply your own test dispatcher:

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

This flexibility enables more controlled testing environments. The previous APIs (runComposeUiTest, runSkikoComposeUiTest, and runDesktopComposeUiTest) are now deprecated in favor of their v2 counterparts. It’s a good time to migrate your test suites to take advantage of the improved predictability and new capabilities.

Compose Multiplatform 1.11.0: Enhanced iOS Experience and Revamped UI Testing
Source: blog.jetbrains.com

Smoother Scrolling on Web Targets

Scrolling performance on Compose for Web has been a known pain point compared to native targets. With version 1.11.0, the team substantially reworked touch event processing. The result: scrolling in web applications now feels much closer to what users experience on Android, iOS, or desktop. You can see this in action in the latest web version of the KotlinConf App, which demonstrates the improved fluidity.

For all the technical details, along with demos and a full list of fixes, refer to the dedicated issue CMP-9727. This improvement brings web apps one step closer to parity with other platforms, making Compose Multiplatform an even more viable choice for cross-platform development.

Get Started with 1.11.0

To upgrade, update your Compose Multiplatform dependency to version 1.11.0. Try out the new APIs—especially the native iOS text input and the v2 testing framework—and see how they fit into your workflow. The team is eager for feedback, so don’t hesitate to share your experiences or report issues. For a complete list of changes, check out the full release notes or the official What’s New page.

Tags:

Recommended

Discover More

Python 3.15.0 Alpha 3: Early Preview Introduces Statistical Profiler and UTF-8 Default EncodingIkea's Matter-over-Thread Smart Home Lineup: Affordable Promise Marred by Connection HiccupsNo Shade, No Escape: Salt Pan Workers Face Unprecedented Heat Crisis in India's Thar DesertMythos AI Finds 271 Firefox Flaws: Mozilla Details How They Eliminated False PositivesGitHub Deploys AI System to End Accessibility Feedback Black Hole: Every Report Now Tracked to Resolution