jetc.dev Newsletter Issue #306
Published: 2026-03-17
We have a new production Compose patch release, our first 1.11.0 beta release, and a
new Compose Multiplatform alpha, among other goodies from Google and JetBrains!
In addition to those, we look at recomposition testing and recomposition budgets, preview sandboxes and preview implementations, a Markdown editor composable, and a macOS 26 design system.
Plus, we see that it is time for us to take action regarding “Time to Take Action”. Though I wonder, does anyone really know what time it is?
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
Time marches on, and so do the Compose BOMs, which are up to 2026.03.00. The production
BOM points mostly to the 1.10.5 patch release, which contains a few bug fixes.
The beta BOM points to 1.11.0-beta01, suggesting that we might get a stable 1.11.0 in time
for Google I|O 2026. The beta contains:
- A bunch of changes to pointer input, probably with an eye towards trackpads
- A new
rememberUpdateStyleState()for the experimental Style API - Changes to the
FlexBox()DSL, moving to functions rather than properties for configuration - A new
PreviewWrapperfor, um, wrapping previews - Support for constrained sharing of font-related objects, like
FontLoaderandFontFamilyResolver - Support for rendering dialogs and popups from services via a custom
windowTokenandwindowType - Support for an experimental media query API, apparently for CSS-style declarative adaptive UI approaches
Remote Compose is up to 1.0.0-alpha06, adding experimental support for TextStyle, along with
a bunch of other new APIs.
In Compose-related artifacts, we now have:
androidx.activity:activity-compose:1.13.0androidx.camera:camera-compose:1.7.0-alpha01androidx.camera.viewfinder:viewfinder-compose:1.7.0-alpha01androidx.ink:ink-authoring-compose:1.1.0-alpha01androidx.ink:ink-authoring-compose-android:1.1.0-alpha01androidx.ink:ink-brush-compose:1.1.0-alpha01androidx.ink:ink-brush-compose-android:1.1.0-alpha01androidx.ink:ink-geometry-compose:1.1.0-alpha01androidx.ink:ink-geometry-compose-android:1.1.0-alpha01androidx.lifecycle:lifecycle-runtime-compose:2.11.0-alpha02(and multiplatform targets)androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0-alpha02(and multiplatform targets)androidx.media3:media3-ui-compose:1.10.0-rc01androidx.media3:media3-ui-compose-material3:1.10.0-rc01androidx.navigation:navigation-compose:2.10.0-alpha01(and multiplatform targets)androidx.paging:paging-compose:3.4.2(and multiplatform targets)androidx.paging:paging-compose:3.5.0-alpha01(and multiplatform targets)androidx.pdf:pdf-compose:1.0.0-alpha15androidx.savedstate:savedstate-compose:1.5.0-alpha01(and multiplatform targets)
Finally, JetBrains released 1.11.0-alpha04 of Compose Multiplatform.
If you directly reference Shader, you might have some minor(?) breaking changes. Also, Kotlin/Wasm
support now requires Kotlin 2.3.10 or newer. You can opt into native iOS text input as the
backing implementation of BasicTextField(). Also, Key.Home
is being replaced by Key.MoveHome, a few other things were renamed, etc.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
What’s Up with Desktop Window Insets?
Come for the discussion of providing custom window insets on Compose for Desktop, such as for transparent macOS title bars. Stay for the discussion of Jewel (JetBrains’ design system for Compose for Desktop) and what the right way is to build Compose for Desktop UIs.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
TikTok reduces code size by 58% and improves app performance for new features with Jetpack Compose
Google’s Ajesh R Pai and Ben Trengrove provide a brief overview of TikTok’s recent migration to Compose and their results.
Exploring CompositionLocal API internals in Jetpack Compose
Shreyas Patil
(Mastodon, Bluesky)
takes a deep dive into composition locals, from compositionLocalOf()
and CompositionLocalProvider, to the decisions between dynamic and static composition locals,
to lesser-known elements like CompositionLocalContext.
Introducing Dejavu: Recomposition Testing for Jetpack Compose
Matt McKenna (Mastodon, Bluesky) writes about DejaVu, which I mentioned in last week’s issue. This library helps you write tests to validate how much recomposition is going on, so you can better detect if changes to your composables cause your recomposition counts to skyrocket.
Introducing Rebound: context-aware recomposition budgets for Compose
Adit Lal (Mastodon, Bluesky) is interested in the same issue of recomposition counts, but from a slightly different angle: what is an appropriate number of recompositions, given the role of a specific composable? To that end, Adit is building Rebound, which combines a Kotlin compiler plugin and an Android Studio plugin to help you set budgets for recomposition counts and find out when you exceed those budgets.
Medium: Stop Writing 20 @Preview Functions — Build a Runtime Sandbox Instead
George Karanikolas
(Bluesky)
is taking advantage of interactive previews to provide us with
a PreviewSandbox() composable that lets us
tweak the preview configuration and avoid a litany of @Preview functions.
How Compose Preview Works Under the Hood
Jaewoong Eum
(Mastodon, Bluesky)
is also interested in @Preview, in this case showing how it does what it does. This post
explores ComposeViewAdapter, how it fakes Android’s lifecycle, the role of the WrapPreview()
composable, and more.
The Problem Of Time-Based Actions
Eevis Panula
(Mastodon, Bluesky)
points out “Time to Take Action”, a setting that we should be using to determine
how long transient interactive UI (e.g., snackbars) are visible. Eevis shows how we can get this
value from LocalAccessibilityManager and use it to determine how long to keep composables visible.
Medium: Building a Draggable FastScroll Scrollbar for LazyColumn in Jetpack Compose
Devara Fikry Akmal resented the fact that LazyColumn() lacked a fast-scroll scrollbar. This
post explores building one, based on one of Google’s sample apps.
Other Interesting Links
- Embedded Android Photo Picker in Jetpack Compose
- How to create custom Dials
- Jetpack Compose Recomposition at Scale: How Strong Skipping Mode Changes the Stability Rules You Learned
- Medium: Animating Vector Images in Jetpack Compose
- Medium: Designing Auth Screens in Android using Compose
- Medium: In-App Review with Jetpack Compose
- Medium: Jetpack Compose dropShadow vs innerShadow: Complete Guide (2026)
- Medium: Jetpack Compose Performance Best Practices Every Android Developer Should Know
- Medium: Jetpack Compose Side Effects — Actually Explained
- Medium: LocalMaterialTheme: From Prop Hell to Theme Nirvana — Material3
- Medium: Navigation 3 in Compose Multiplatform: architecture decisions and “what is shared” vs. “what is not”
- Medium: PDE-Based Wave Simulation in Jetpack Compose: Canvas vs AGSL
- Medium: The Evolution of Navigation: Migrating Upnext to Type-Safe Jetpack Compose Navigation 3
- Medium: Where Should Initial Load Logic Actually Live in Jetpack Compose?
- Refuelling your Jetpack
- Scoping ViewModels in Compose
- Under the Hood: How Compose and SwiftUI Handle What Happens Off-Screen
Resource Roundup
100% pure code!
GitHub: kdroidFilter / ComposeDarwinUi
Elie Gambache is building a design system mimicking macOS 26’s native style. The design system is for Compose Multiplatform, supporting all major platforms. It includes light/dark mode support, many components, and zero Material dependencies.
GitHub: DenserMeerkat / hyphen
Ragul Raj (Bluesky) brings us a WYSIWYG Markdown editor for Compose Multiplatform, supporting Android, Web, and desktop. It supports undo/redo, Markdown-aware clipboard operations, and more.
GitHub: manjees / compose-reels
GitHub user manjees is working on a Compose for Android library that gives you a vertical scrolling roster of videos, for a UX reminiscent of TikTok, Instagram Reels, etc.
GitHub: Martmists-GH / compose-node-editor
GitHub user Martmists-GH is creating a NodeGraph() composable that allows you to depict nodes
and connections, plus allow the user to edit them. It is described as being for Compose Multiplatform,
but the project structure is a bit strange, so it is unclear which specific platforms it supports.
Other Interesting Links
- GitHub: anaserkinov / telegram-login-widget (“Log in with Telegram” buttons for Compose for Android and iOS)
- GitHub: Debanshu777 / ShaderX (GPU shader effects for Compose for Android, iOS, and Desktop)
- GitHub: DharamStudios / kompose-permissions (simplified permissions for Compose for Android)
- GitHub: DinuCatalinLiviu / compose-toolkit (preliminary design system for Compose Multiplatform)
- GitHub: dungngminh / composable_selection (IDE plugin to help selecting a composable)
- GitHub: joyner-perez / AnimationComposeLibrary (pre-packaged animations for Compose for Android)
- GitHub: KlassenKonstantin / SnappySwipe (swipe to delete for Compose for Android and iOS)
- GitHub: Quantum3600 / skeuo-compose (skeuomorphic design system for Compose for Android and Desktop)
- GitHub: saket / swipe (swipe actions for Compose for Android, iOS, Desktop)
- GitHub: StrableD / ComposePreferences (Material3 preference UI for Compose Multiplatform)
- GitHub: Xemb0 / kmp-multi-auth (Google/Apple/magic link sign-in for Compose for Android and iOS)
Notable Releases
Maps for Compose publised version 8.2.1,
containing a couple of bug fixes.
A Very Particular Set of Skills
Adding Compose capabilities to your coding agents!
From time to time, I will list some new published agent skills related to Jetpack Compose and Compose Multiplatform.
I am not going to attempt to review them, at least not at this time. For example, this week’s batch contains a mix of ones that feel too small and ones that feel too large to me:
- https://github.com/anhvt52/jetpack-compose-skills
- https://github.com/Meet-Miyani/compose-skill
- https://github.com/new-silvermoon/awesome-android-agent-skills
- https://github.com/zshnarz/build-android
I am more interested in skills that focus on specific things, like Nav3 or Compose Unstyled, as I suspect that they will be more useful. Reach out if you have suggestions!
As always, unless the skill is clearly very popular: always read the skill before adding it to your agent harness. Skills are a breeding ground for prompt injection attacks. Trust your skill suppliers before adding them to a project, whether directly or via an agent harness plugin.
Recent Issues:
- 2026-03-03: Compose updates! Compose Multiplatform alpha! Compose styles API! LaTeX rendering! And... a linked list, for realz?!?
- 2026-02-24: Reducing development friction! Line graphs! CMP IDE plugin! Syntax highlighting! And... can we *finally* get rid of ViewModel?!?
- 2026-02-17: Compose patch release and alpha release! Compose Multiplatform patch release! Bottom sheets! Colors and accessibility! And... can we work with Glance?!?