jetc.dev Newsletter Issue #288
Published: 2025-11-04
This week, we get more adaptive, and we learn what the French word is for “notebook”. We see that Compose is going remote, and we try to find bugs in our font scaling code. And we explore wheel pickers, data tables, and document scanners, all for Compose Multiplatform.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
JetBrains released 1.9.2 of Compose Multiplatform,
addressing some compile-time and runtime bugs.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
Why Is Navigation Breaking with Notifications and Deep Links?
TL;DR: Make sure that your navigation graph wraps each composable() in a navigation()
when you need a separate back stack. Learn more in this week’s higlighted Stack
Overflow question.
Does CMP Leak Into Android Builds?
Suppose an Android project depends on a Compose Multiplatform module
that has a composable in commonMain,
and the Android project uses that composable. What gets included in the Android APK/AAB?
Do we wind up with both Jetpack Compose and Compose Multiplatform dependencies?
Learn the answer in this week’s highlighted Kotlinlang #compose Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Material 3 Adaptive 1.2.0 is stable
Google’s Rob Orgiu announced the stable 1.2.0 release of Compose Material3 Adaptive,
with support for new large and extra-large breakpoints, along with new “reflow”
and “levitate” strategies for making use of extra space.
Google Kotlin Multiplatform Docs
Google has added official documentation to the Android Developers site regarding the use of Kotlin Multiplatform. This includes references to Compose Multiplatform, though Google fully delegates support for non-Android platforms to JetBrains.
Introducing Cahier: A new Android GitHub sample for large screen productivity and creativity
Google’s Chris Assigbe announced the release of a new note-taker sample app, called Cahier (French for “notebook”). This demonstrates the use of Compose Material3, including Material3 Adaptive, along with Jetpack Ink and a variety of Android-specific platform APIs.
Slides: Introducing RemoteCompose: break your UI out of the app sandbox
At droidcon London 2025, Google’s John Hoford and Nicholas Roard (Mastodon, Bluesky) previewed RemoteCompose, a forthcoming framework for using composables to define UIs that can be transmitted to other processes or machines for rendering.
Medium: When MaterialTheme is no longer enough
Andrew Malitchuk notes that few designers wish to be constrained by the Material Design
framework, and as such using MaterialTheme can be an odd fit in a Compose UI app.
Andrew reviews how to create a completely custom theme, distributed to your composables
via composition locals.
Medium: Compose-Native CameraX Is Now Stable: End-to-End Guide for Jetpack Compose
Ioannis Anifantakis takes a deep dive into the CameraX CameraXViewfinder() composable
as the foundation for building a camera UI without directly dealing with legacy views
as much. Ioannis also demonstrates how some preview operations, such as tap-to-focus,
are substantially easier to implement with this new UI layer.
Compose UI Tests for Larger Font Sizes: Scrolling and Text Truncation
Dealing with larger font sizes has long been a challenge for many developers. Eevis Panula (Mastodon, Bluesky) reviews how to write tests to exercise font scaling and determine whether our UI breaks, such as not offering scrolling or having text be truncated. Also, the droidcon Berlin 2025 crew interviewed Eevis regarding her experiences with and expertise in accessibility.
Quick & Easy Glass Effects in Jetpack Compose
Where Apple goes, graphic designers tend to follow, so we should expect a significant
uptick in requests for “glassmorphism”, “glassy effects”, and so on. Joseph Sanjaya
explains what this can mean (“Real glass isn’t transparent it’s reactive.”) and
demonstrates a GlassContainer() to help bring this sort of effect to life.
Medium: Bridging the Gap: An effective ViewModel-Compose Communication Pattern
To quote Aggelos Koukio’s introduction, “TL;DR: This article introduces a BaseViewModel pattern that bridges Clean Architecture’s domain/presentation layers with Compose’s reactive nature using MVI-like reducers and Kotlin Flows for backpressure handling.”
Other Interesting Links
- Efficiently Building App Permission Flows with the Compose Permission Request Template
- Medium: Avoid Unnecessary Recomposition
- Medium: Building Screens with Jetpack Compose
- Medium: Eliminating Jank in Composables: 3 Practical Techniques for Smooth Jetpack Compose UI
- Medium: How Compose Manages State: A Deep Dive into Snapshot System and Recomposition Triggers
- Medium: Jetpack Compose Multi-Language Support: Building Truly International Apps
- Medium: Jetpack Compose: State Management for Flutter Developers
- Medium: Smoothly Animating a Segmented Control and Its Screen in Jetpack Compose
- Medium: That “Simple” Jetpack Compose Migration
- Medium: What’s New in Jetpack Compose — Autofill, Visibility Tracking & Smarter Text
- NavigationEvent Info
- Substack: The Complete Internals of Jetpack Compose’s remember: A Deep Dive
- Video: Blazing Fast UI Development with Compose Hot Reload
- Video: Navigating the future with Jetpack Navigation 3
Resource Roundup
100% pure code!
GitHub: aleksandar-stefanovic / compose-material-data-table
Aleksandar Stefanović is working on a Material2-style data table, supporting most Compose Multiplatform platforms (Android, iOS, desktop; partial Web/WASM support). It supports a range of column types, with sortable columns, custom column widths, filtering, and more.
GitHub: software-mansion-labs / kmp-wheel-picker
The Software Mansion team brings us a wheel picker UI, supporting Compose Multiplatform for Android, iOS, and desktop. It includes customizable animations, scroll friction, and composables for the items and window.
GitHub: kalinjul / EasyDocumentScan
Julian Kalinowski has created a Compose Multiplatform wrapper around Android and iOS document scanning APIs.
Notable Releases
Google’s Horologist is up to v0.8.3-alpha,
which now depends on the 1.6 alpha releases of Wear Compose.
Compose Unstyled is out with 1.47.1,
with a few bug fixes for 1.47.0.
That release added dynamic detents and its own set of stability fixes, emphasizing sheets.
Vortex released 0.3.0, with
back transition support.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-10-21: Gap buffers! Organizing previews! Liquid Glass! Custom design systems! And lots of stuff from Jaewoong Eum!
- 2025-10-14: New Compose BOMs! New Compose Multiplatform alpha! Nav2 -> Nav3 migration! Keys and lazy containers! Coachmarks! And... do we really want our UI to glitch?!?
- 2025-10-07: Nav graph diagrams! Native code in Compose Multiplatform! Modifier.Node API! Multiplatform maps! And... how do we bust drawWithCache()?!?