jetc.dev Newsletter Issue #281

Published: 2025-09-16

We got a new Compose patch release, a new Compose alpha, new Wear Compose releases, and a Compose Multiplatform RC!

Beyond those, we see what “remote Compose” is and consider the new visibility APIs. Plus, we render composables without an Activity and look at a multiplatform biometrics UX wrapper.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose BOMs are up to 2025.09.00. The production BOM mostly points to 1.9.1, which contains bug fixes. The alpha BOM mostly points to 1.10.0-alpha03, which contains a lot of under-the-covers improvements but seemingly little to affect the commonly-used public API.

Similarly, Wear Compose had a pair of releases. 1.5.1 contains bug fixes, while 1.6.0-alpha01, which adds:

  • Non-clickable card implementations
  • A new minutes-and-seconds TimePicker(), skipping the hour column
  • Bug fixes

We also got a bunch of Compose-adjacent updates, including:

  • androidx.activity:activity-compose:1.11.0
  • androidx.activity:activity-compose:1.12.0-alpha08
  • androidx.camera:camera-compose:1.5.0
  • androidx.camera.viewfinder:viewfinder-compose:1.5.0
  • androidx.hilt:hilt-lifecycle-viewmodel-compose:1.3.0
  • androidx.hilt:hilt-navigation-compose:1.3.0
  • androidx.navigation:navigation-compose:2.9.4
  • androidx.navigation:navigation-compose-android:2.9.4
  • androidx.navigation:navigation-compose-jvmstubs:2.9.4
  • androidx.navigation:navigation-compose-linuxx64stubs:2.9.4
  • androidx.navigation:navigation-fragment-compose:2.9.4
  • androidx.navigationevent:navigationevent-compose:1.0.0-alpha08
  • androidx.navigationevent:navigationevent-compose-android:1.0.0-alpha08
  • androidx.navigationevent:navigationevent-compose-jvmstubs:1.0.0-alpha08
  • androidx.navigationevent:navigationevent-compose-linuxx64stubs:1.0.0-alpha08
  • androidx.paging:paging-compose:3.4.0-alpha04
  • androidx.paging:paging-compose-android:3.4.0-alpha04
  • androidx.paging:paging-compose-desktop:3.4.0-alpha04
  • androidx.paging:paging-compose-iosarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-iossimulatorarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-iosx64:3.4.0-alpha04
  • androidx.paging:paging-compose-js:3.4.0-alpha04
  • androidx.paging:paging-compose-linuxarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-linuxx64:3.4.0-alpha04
  • androidx.paging:paging-compose-macosarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-macosx64:3.4.0-alpha04
  • androidx.paging:paging-compose-mingwx64:3.4.0-alpha04
  • androidx.paging:paging-compose-tvosarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-tvossimulatorarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-tvosx64:3.4.0-alpha04
  • androidx.paging:paging-compose-wasm-js:3.4.0-alpha04
  • androidx.paging:paging-compose-watchosarm32:3.4.0-alpha04
  • androidx.paging:paging-compose-watchosarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-watchosdevicearm64:3.4.0-alpha04
  • androidx.paging:paging-compose-watchossimulatorarm64:3.4.0-alpha04
  • androidx.paging:paging-compose-watchosx64:3.4.0-alpha04

Finally, JetBrains released Compose Multiplatform 1.9.0-rc02, containing a few bug fixes.

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

Is TextFieldState Affected by Recomposition?

State holders are affected by recomposition, the same as everything else. If you are populating a TextFieldState from part of some UI state object, if that state changes (even if the part you reference does not), your code populating the TextFieldState will recompose. Learn more in this week’s highlighted Stack Overflow question.

What Is “Remote Compose”?

The Compose repository in GitHub has a new remote directory. Learn what it contains, and where it might lead Compose for Android development, in this week’s highlighted Kotlinlang #compose Slack thread.

DroidKaigi 2025

DroidKaigi 2025 had several presentations related to Compose. Some were in English, including:

Others were in Japanese, including:

Composable Commentary

Posts, videos, and other new information related to Jetpack Compose!

Medium: Visibility APIs in Jetpack Compose 1.9: Easier, Cleaner… but Not Quite There Yet

Pablo Costa likes the new onVisibilityChanged() and onFirstVisible() modifiers introduced in Compose 1.9 to find out the visibility of LazyList items. However, in testing, Pablo found them to be less reliable than the snapshotFlow()-based approach we had to use before.

Medium: Introducing Shaded: A library to bring the compose blur modifier on lower Android APIs

Mohamedd Hassan wanted to use the blur() modifier, but it only supports API 31 (Android 12) and higher, leading to the creation of the Shaded library for Compose for Android to supply a blur() backport.

Medium: How did we implement Multi-Language support using Jetpack Compose? [Android]

Some apps offer their own in-app language selector, independent from the system language. Shubham Kumar Gupta explores how to implement that sort of UX in Compose for Android, allowing users to select a language, then render the entire app content in that language.

Compose UI without an Activity

ahmed el-helw (Mastodon) walks us through how to use a ComposeView without an Activity, with the help of DisplayManager, Presentation, and SavedStateRegistryOwner.

Medium: SnapNotify: How I Simplified Jetpack Compose Snackbars from 15+ Lines to One Line

Vamsi Vaddavalli created the SnapNotify library mentioned in the previous newsletter. In this Medium post, Vamsi explains how to use SnapNotify to replace a lot of snackbar boilerplate code and create powerful snackbars.

Resource Roundup

100% pure code!

GitHub: kdomskia / kdomskia

The kdomskia has released their eponymous library, a wrapper atop of Compose Multiplatform that makes it easier to create HTML/CSS/JS-based Web apps as peers of Android, iOS, and desktop apps. kdomskia, in turn, is powered by Compose HTML and Kobweb.

GitHub: N7ghtm4r3 / Biometrik

GitHub user N7ghtm4r3 offers a Compose Multiplatform wrapper around platform-specific biometric authentication UIs, for iOS, Android, Web, and desktop (Windows/Linux/macOS). Just use the supplied BiometrikAuthenticator() composable to trigger the biometric UI for the current platform.

GitHub: Kyant0 / AndroidLiquidGlass

GitHub user Kyant0 created a Compose for Android implementation of a glassmorphic presentation resembling Apple’s Liquid Glass.

GitHub: Neotica / NeoToast

The Neotica team created a toast-style popup UI for Compose Multiplatform, supporting Android, iOS, and desktop.

GitHub: senseiiii12 / SwipeSnack

GitHub user senseiiii12 brings us yet another snackbar implementation for Compose for Android, powered by a SwipeSnackBox() container supplying a SwipeStackController to show the snackbar in that container.

Notable Releases

Maps for Compose is up to 6.10.0, adding “a robust Google Maps initializer”. 🤷🏻