jetc.dev Newsletter Issue #337
Published: 2026-11-03
This week, Android Dev Summit had an outsized impact, from conference videos to new libraries, so we take a peek!
We also examine Layoutlib, consider Remote Compose, and see how to deal with foldables on both iOS and Android. Plus, since Halloween was last week, we talk a bit about death… of our Android processes, at least. 💀
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
Presumably tied into Android Dev Summit 2026, we got a couple of new artifact groups with Compose-related artifacts.
AppState StateStoreis a new library built on the Compose runtime that acts as a wrapper to provide custom integrations. Theandroidx.appstate.statestoreartifact provides the library APIs and it also comes with aandroidx.appstate.statestore:statestore-datastoreartifact for state persistence. Developers can useStateStoreto hoist their snapshot state into their application layer and the datastore integration to persist that state.
AppState Transformis a new library built on the Compose runtime that allows for running a composition outside of your UI. Theandroidx.appstate.transform:transformartifact provides the library APIs and it also comes with aandroidx.appstate.transform:transform-testingartifact for testing. Developers can use Transform to manage their composition anywhere within their app.
Also, Media3 got a bump to 1.12.0-alpha02, which includes:
androidx.media3:media3-ui-compose:1.12.0-alpha02androidx.media3:media3-ui-compose-material3:1.12.0-alpha02
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Can I Avoid Losing Effects When State Changes Rapidly?
One use of LaunchedEffect() is to launch animations. If the composable will recompose with key changes for the LaunchedEffect(), the old effect is canceled and the new effect runs. This has the side effect of interrupting one animation to start another, which can lead to odd visual results. The solution is to track a richer bit of state, one that allows you to know all the animations yet to run, so you can still run them. Learn more in this week’s highlighted Stack Overflow question.
How Does Strong Skipping Deal with Inline/Value Types Across Modules?
Compose strong skipping is cool. Kotlin inline classes are cool, and the upcoming full value classes are cool. Multi-module projects are cool. Combining all three gets a bit interesting, at least in terms of the possibilities for Compose optimization, as we see in this week’s highlighted Kotlinlang #compose Slack thread.
Android Dev Summit 2026
Google held an Android Dev Summit for the first time in a while. Many of their sessions touched upon Compose, including:
- Android Dev Summit 2026 keynote
- Build world anchored experiences for wired XR glasses
- Building reliable text editing experiences in Compose
- Building type-safe deep links with Jetpack Navigation3
- Elevate immersive experiences with 3D Engines in Jetpack Compose for XR
- Evolving Tiles to Wear Widgets using Jetpack Glance and Remote Compose
- Graphics features in Jetpack Compose that can elevate your app
- Let agents generate UI in your Android apps with A2UI
- Migrating two decades of the Google Play app to Jetpack Compose
- Optimize media playback and maximize reach with Jetpack Media3 APIs
- Outperform yourself in Compose
- Powering interactive surfaces with Remote Compose
- Scale your app for every screen with Compose
- Scaling input interactions beyond the touchscreen with Jetpack Compose
- Take Compose state beyond the UI with Jetpack AppState
- The latest in Android dev tools from Android Dev Summit 2026
- Trace me if you can: Automated instrumentation and field profiling
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Medium: Inside Android Layoutlib: How View and Compose Previews Reach the Canvas
Ravi Rawal looks inside the oft-ignored Layoutlib, the rendering library used for things like @Preview in Android Studio and IntelliJ IDEA. This is designed to avoid device runtimes, instead aiming to reproduce what you would see on devices using a host-supplied framework.
Medium: Remote Compose: When the UI travels as instructions
Santiago Mattiauda compares and contrasts classic JSON-based server-defined UI (SDUI) techniques with Remote Compose, to see how they perform and what limitations they present.
Medium: Your Jetpack Compose Screen Forgot Everything? Test for Process Death
Smaranika Kar reminds us that nothing lasts forever, especially Android app processes. This post also reminds us of techniques for dealing with this, such as SavedStateHandle and rememberSaveable().
Medium: Beyond Phone Screens: Our Journey with Adaptive Layouts in Box Box Club
Bhoomi Gadhiya writes about how Box Box Club migrated to adaptive layouts from phone-specific designs, starting with navigation elements and eventually migrating screens one at a time.
Medium: What Should You Pass Into a Compose Screen?
Swaran Singh Aulakh reminds us that our leaf composables generally should avoid having complex parameter types, such as viewmodels, NavController, Flow, etc. Having simpler parameters, such as current state values and event lambdas, make it easier to develop previews and write solid unit tests.
Other Interesting Links
- Bring to life your SVGs in the Multiplatform project
- Generate image 3D Modelling using Jetpack Compose WebGPU
- How a holographic foil effect works in Jetpack Compose
- Medium: How to blur what’s behind a Jetpack Compose dialog
- Medium: Jetpack Compose 1.13 Fix Mixed-Size and Multilingual Text Layouts with LineHeightStyle.Mode.PerLine
- Medium: Mini-Uber Part 2: Building an Adaptive iPhone Duo UI with Compose Multiplatform
- Medium: Paparazzi vs Compose Screenshot Testing: A Practical Android Guide
- Medium: TextFieldState vs TextFieldValue: Migrating Compose Text Fields
- Medium: The Glass Is in the Edges
- My Jetpack Compose List Was Dropping Frames on ₹ Signs — Here’s the Fix
- What I learned shipping a running app with Kotlin Multiplatform, Compose, and a native Apple Watch app
Resource Roundup
100% pure code!
GitHub: AntonUdovychenko / kmp-bugreport
Anton Udovychenko brings us a bug reporter UX for Compose Multiplatform, supporting all major targets. It includes grabbing screenshots with markup, adding images and Markdown-formatted descriptions, and customizable forms of delivering the reports.
GitHub: jantursky / crease
Ján Turský is working on foldable-aware layouts for Compose Multiplatform, supporting both Android and iOS (now that the iPhone Duo is a thing).
GitHub: jantursky / kapow
Ján Turský is also creating a library of animation effects for Compose Multiplatform, supporting all major targets. Specifically, these animations are designed to play when a state changes, such as a puff of smoke when a component vanishes.
Notable Releases
Compose Unstyled’s 2.10.2 release seems to mostly address normalizing how Host works with things it can manage, such as dialogs and modal bottom sheets.
A Very Particular Set of Skills
Adding Compose capabilities to your coding agents!
A2UI continues its turn in the spotlight. This project ports Google’s A2UI Compose implementation to Compose Unstyled, while this project offers an A2UI implementation for the embedded Compose engine that I mentioned last week.
And we have some more skills:
Recent Issues:
- 2026-10-20: Compose alpha and beta releases! Compose Multiplatform patch release! Composables to PDFs! Pixelating composables! Kotlin/Native for Compose for Desktop!
- 2026-10-06: Offline Compose for Web apps! FLAG_SECURE! FFmpeg multiplatform player library! Node editor!
- 2026-09-29: Stable Wear Compose and Nav3! Compose Multiplatform patch! A2UI! Compose for Web and CORS! Android TV search screen!