jetc.dev Newsletter Issue #312

Published: 2026-04-28

Compose 1.11.0 is stable! 🎉 Which means… we also have a new alpha!

This week, we look at those, along with the latest Compose Multiplatform beta. We see how that beta improves composable testing, plus what the move to LinkBuffer for slot tables means for performance. In addition, we look at implementations of tables, PDF renderers, and text underlining.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose BOMs are up to 2026.04.01. The production BOM points to the newly-stable 1.11.0 release. 🎊 The alpha BOM points to 1.12.0-alpha01, as the release train pulls out to the next station. This initial alpha includes:

  • A updated requirement for a minimum Android Gradle Plugin version of 9.2.0
  • @ExperimentalComposeViewContextApi was removed, along with a bunch of AndroidComposeUiFlags flags
  • New runWhenIdle() and awaitAndRunWhenIdle() in ComposeTestRule and ComposeUiTest
  • New colorFilter and textMotion items in StyleScope

Compose Material3 is up to 1.5.0-alpha18, with new shape morphing overloads for FilterChip(), ElevatedFilterChip(), and InputChip(). In addition, there is improved support for submenus within dropdown menus, and more besides.

Remote Compose is up to 1.0.0-alpha09. The clickable() modifier no longer accepts null and no longer accepts a vararg of actions. Similarly, onTouchDown() and onTouchUp() no longer accept a vararg of actions — CombinedAction is the replacement for the missing vararg. In addition, padding is now start/end rather than left/right.

Glance for Wear OS is out with 1.0.0-alpha08, with bug fixes.

We also got updates for other Compose-related artifacts:

  • androidx.biometric:biometric-compose:1.4.0-alpha07
  • androidx.hilt:hilt-lifecycle-viewmodel-compose:1.4.0-beta01
  • androidx.hilt:hilt-navigation-compose:1.4.0-beta01
  • androidx.ink:ink-authoring-compose:1.1.0-alpha02
  • androidx.ink:ink-authoring-compose-android:1.1.0-alpha02
  • androidx.ink:ink-brush-compose:1.1.0-alpha02
  • androidx.ink:ink-brush-compose-android:1.1.0-alpha02
  • androidx.ink:ink-geometry-compose:1.1.0-alpha02
  • androidx.ink:ink-geometry-compose-android:1.1.0-alpha02
  • androidx.lifecycle:lifecycle-runtime-compose:2.11.0-beta01 (and multiplatform targets)
  • androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0-beta01 (and multiplatform targets)
  • androidx.navigation:navigation-compose:2.10.0-alpha03 (and multiplatform targets)
  • androidx.navigation:navigation-compose:2.9.8 (and multiplatform targets)
  • androidx.navigation:navigation-fragment-compose:2.10.0-alpha03
  • androidx.navigation:navigation-fragment-compose:2.9.8
  • androidx.navigationevent:navigationevent-compose:1.1.0 (and multiplatform targets)
  • androidx.paging:paging-compose:3.5.0-rc01 (and multiplatform targets)
  • androidx.pdf:pdf-compose:1.0.0-alpha18
  • androidx.savedstate:savedstate-compose:1.5.0-beta01 (and multiplatform targets)
  • androidx.text:text-vertical-compose:1.0.0-alpha05

Finally, JetBrains released 1.11.0-beta03 of Compose Multiplatform, suggesting that a stable release is only a month or two away. In addition to bug fixes, this release adds drag-to-scroll support in SelectionContainer.

Composable Commentary

Posts, videos, and other new information related to Jetpack Compose!

What’s new in the Jetpack Compose April ‘26 release

Google’s Meghan Mehta explains what we got in Compose 1.11, from coroutine dispatcher changes in tests and shared element debugging to better trackpad support and @PreviewWrapper.

Clean Lap: UI Testing in Compose Multiplatform

KMP Bits looks at the Compose Multiplatform 1.11 beta and how it makes multiplatform composable testing in commonTest a more achievable objective.

Medium: Declarative Adaptive Layouts: Leveraging Nav3 Metadata for Multi-Pane UI

Tetiana Synytsyna explores how Nav3 supports adaptive layouts, especially using the metadata parameter on entry() to connect different adaptive pieces (e.g., list/detail/extra, main/supporting).

Medium: Compose Drawing Mastery — Part 1: The DrawScope Foundation

Sergey Drymchenko demonstrates how to use drawBehind() and drawWithContent() and their DrawScope contexts to flatten your UI for cases where you are using traditional composables like Box() and Spacer() for rendering.

The New LinkBuffer SlotTable: What Changes and Why It Matters

Jaewoong Eum (Mastodon, Bluesky) explores the ramifications of the new LinkBuffer approach to implementing slot tables, introduced on an experimental basis in Compose 1.10. The post explains how to enable it, the likely performance changes for your app, and more.

Resource Roundup

100% pure code!

GitHub: mamon-aburawi / Table-KMP

Mamon Aburawi is building a flexible table renderer for Compose Multiplatform, supporting all major targets. It includes arbitrary composables as cells, drag-and-drop, row selection, bi-directional scrolling, and more.

GitHub: kdroidFilter / ComposePdf

Elie Gambache offers us PDF rendering for all major Compose Multiplatform targets, including progressive rendering, LRU caching, text extraction and overlays, and more.

GitHub: glossybigbro / inkline

GitHub user glossybigbro brings us a richer alternative to TextDecoration.Underline, with independent colors, styles, thickness, offset from text, and other configuration options. Alas, it only supports Compose for Android.

GitHub: ninenox / KotlinLocalization

Nisit Sirimarnkit is working on dynamic language swapping for Android apps, with some basic Compose for Android integration.

Notable Releases

Compose Unstyled had two point releases. 1.49.7 ensures that all component primitives now have names starting with Unstyled, and you now need to declare how the system UI styling should be for modals. 1.49.9 mostly was bug fixes, though ScrollArea() is moving between packages.

A Very Particular Set of Skills

Adding Compose capabilities to your coding agents!

In addition to https://github.com/HornedHeck/compose-skill, I saw https://github.com/AlexGladkov/claude-in-mobile for letting agents control Compose Multiplatform targets, including Android/iOS phones and desktop apps. The vision is to use this for testing, more so than turning into some sort of OpenClaw replacement.

Featured here? Please add this badge to your article or repo! As Seen In - jetc.dev Newsletter Issue #312

Powered by Buttondown

Or, you can subscribe to the Atom feed or follow Mark Murphy on Mastodon or Bluesky.

Spread the Word!
Suggestions?
If you have ideas for items for future newsletter editions, reach out via email or contact Mark Murphy on kotlinlang Slack!