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 @ExperimentalComposeViewContextApiwas removed, along with a bunch ofAndroidComposeUiFlagsflags- New
runWhenIdle()andawaitAndRunWhenIdle()inComposeTestRuleandComposeUiTest - New
colorFilterandtextMotionitems inStyleScope
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-alpha07androidx.hilt:hilt-lifecycle-viewmodel-compose:1.4.0-beta01androidx.hilt:hilt-navigation-compose:1.4.0-beta01androidx.ink:ink-authoring-compose:1.1.0-alpha02androidx.ink:ink-authoring-compose-android:1.1.0-alpha02androidx.ink:ink-brush-compose:1.1.0-alpha02androidx.ink:ink-brush-compose-android:1.1.0-alpha02androidx.ink:ink-geometry-compose:1.1.0-alpha02androidx.ink:ink-geometry-compose-android:1.1.0-alpha02androidx.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-alpha03androidx.navigation:navigation-fragment-compose:2.9.8androidx.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-alpha18androidx.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.
Other Interesting Links
- Compose Strong Skipping Mode Does Not Make Your Types Stable
- In what order are Compose modifiers applied?
- Medium: Beyond Local Rendering: Building a Server-Driven UI System with RemoteCompose
- Medium: Beyond the Surface: Mastering Jetpack Compose Preview Internals & Scalable Patterns
- Medium: Build Awesome Android Widgets with Compose & Glance: A Clean Architecture Approach
- Medium: Combot MCP: Your AI DSL to create Android Compose tests!
- Medium: Lifecycle Management in Android Development with Jetpack Compose
- Medium: Mastering Navigation 3: Managing Per-Screen ViewModels with NavBackStack
- Medium: retain{ } in Compose: The State Primitive I Wish I’d Had Sooner
- Medium: Stop Recomposing! 4 Jetpack Compose Performance Rules You Are Probably Breaking
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.
Other Interesting Links
- GitHub: adamglin0 / compose-recompose-pulse (flash on recompositions for Compose Multiplatform)
- GitHub: beeper / matrix-messageformat-compose (Matrix messages to
AnnotatedStringfor Compose Multiplatform)
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.
Recent Issues:
- 2026-04-14: 1.11.0 RC and beta releases! App languages! Atomic design! Action modes! And... *another* newsletter?!?
- 2026-04-07: Design system rules! Cross-platform haptics! Cross-platform biometrics! Editors! More editors! And... yet more editors?!?
- 2026-03-31: Compose Multiplatform beta! Back handling! Flexbox! Rich text input! Composition tracing! And... text input? That's rich!