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!

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.”

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.