jetc.dev Newsletter Issue #293

Published: 2025-12-09

Our possibly-final release wave of the year includes the stable version of Compose for Android 1.10.0, a new Compose alpha, Compose Multiplatform 1.10.0-rc01, and more!

This week, in addition to those, we look at Nav3, pausable compositions, and multiplatform haptic feedback. Plus, Jake Wharton suggests that perhaps we should not set ourselves up the BOM.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose BOMs are up to 2025.12.00. The production BOM contains the stable version of 1.10.0.

The alpha BOM contains 1.11.0-alpha01, because the release train keeps on chugging. The new alpha includes:

  • A new scrollIndicator() modifier to add scroll indicators to scrollable containers, something that third party developers have had to supply for quite some time

  • Marking the onFirstVisible() modifier as deprecated

  • A new visible() modifier “which can be used to skip drawing the content of a Composable without affecting the space it occupies”

Compose Material3 is is up to 1.5.0-alpha10, adding a “multi-aspect” carousel.

Glance is out with 1.2.0-rc01, with only minor changes from beta01.

Wear Compose has both 1.5.6 and 1.6.0-alpha06. As one might expect, 1.5.6 just contains a few bug fixes. The alpha release adds:

  • LocalRippleConfiguration, to allow you to configure the ripple appearance

  • New AlertDialog() versions that use TransformingLazyColumn()

  • Other improvements and bug fixes

We also got updates to Compose-related artifacts, including:

  • androidx.activity:activity-compose:1.12.1
  • androidx.ink:ink-authoring-compose:1.0.0-rc01
  • androidx.ink:ink-authoring-compose-android:1.0.0-rc01
  • androidx.ink:ink-brush-compose:1.0.0-rc01
  • androidx.ink:ink-brush-compose-android:1.0.0-rc01
  • androidx.ink:ink-geometry-compose:1.0.0-rc01
  • androidx.ink:ink-geometry-compose-android:1.0.0-rc01
  • androidx.navigationevent:navigationevent-compose:1.0.1 (and multiplatform targets)
  • androidx.pdf:pdf-compose:1.0.0-alpha12

Also, JetBrains released 1.10.0-rc01 of Compose Multiplatform, hot on the heels of Google’s release of the stable 1.10.0 of Compose for Android. As expected, this is mostly a set of bug fixes and dependency updates.

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

Why Is My SwipeToDismissBox() Not Working?

Material3 1.4.0 changed some SwipeToDismissBox() behaviors, which in turn may break some of your plans for using that function. Learn more, and about a bug in 1.4.0 that may cause problems for you, in this week’s highlighted Stack Overflow question.

Why Does rememberUpdatedState() Update After Remembering?

Sometimes, looking at the source code of core composable functions can cause confusion. 🤯 In this case, rememberUpdatedState() has a value = newValue statement that, on the surface, may seem superfluous. Learn why it is there and how rememberUpdatedState() differs from ordinary remember() in this week’s highlighted Kotlinlang #compose Slack thread.

Composable Commentary

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

What’s new in the Jetpack Compose December ‘25 release

Google’s Nick Butcher (Mastodon, Bluesky) writes about Compose 1.10 and the other elements of the Compose 2025.12.00 BOM, including runtime improvements.

Video: Navigation 3 API overview

Google’s Don Turner delivered a presentation regarding Navigation 3 for Compose (Nav3). Topics include using the API both in single-module and multi-module projects, animating between screens, and implementing adaptive layouts through Nav3’s “scenes” system.

Video: Navigation 3 #AskAndroid

Google’s Clara Fok, Ian Lake, Don Turner, and Jeremy Woods took your questions regarding Nav3 in a recorded #AskAndroid livestream.

Video: Make your composition pause

Google’s Andrei Shikov (Bluesky) delivered a droidcon London 2025 presentation on Compose 1.10 and its pausable composition feature. This allows composables to pause composition part-way through, which is especially useful if they might exceed the available time for rendering a frame.

Medium: Compose Multiplatform at Perk: A Pragmatic Look at Our Journey So Far

Luis G. Valle describes how the Perk team migrated to using Compose Multiplatform in their app. This includes the benefits of using a mono-repo, their adoption strategy, and the benefits they have gained from the migration.

Let’s defuse the Compose BOM

Jake Wharton (Mastodon) suggests that the Compose BOM might add less value to your project than you might expect, especially given the rise of Gradle version catalogs and Jake’s own recommendation to use AndroidX beta releases.

Create animated stripes in Jetpack Compose

sinasamaki (Mastodon, Bluesky) is back, this time demonstrating a sneaky way to use gradients and TileMode.Repeated to implement a stripe pattern, then animating those stripes by animating their position offsets.

Medium: The 4-Layer Defense: A Strategic Approach to Jetpack Compose Testing

Sarveshwar Maheshwari outlines their organization’s approach to quality assurance with respect to Compose-based UIs. Instead of relying solely on simple “is it displayed?” tests, the team leverages previews, automated logic and “reality” tests, and manual performance analysis.

Resource Roundup

100% pure code!

GitHub: classops / kmp-screenutil

GitHub user classops published a Compose Multiplatform library inspired by flutter_screenutil to allow you to set dimensions based on a design’s size, with the library automatically scaling based on available space.

GitHub: xfqwdsj / multihaptic

GitHub user xfqwdsj created a Compose Multiplatform library offering haptic feedback across most of the multiplatform target platforms.

GitHub: sajidalidev / compose-epg-viewer

Sajid Ali released a Compose Multiplatform library that renders a TV guide-style UI, with rows per channel tied to a timeline of events on that channel. The library supports Android, iOS, and desktop.

GitHub: composablehorizons / compose-uri-painter

Alex Styl (Bluesky) brings us a rememberUriPainter() function that serves as a low-ceremony wrapper around Coil for Compose Multiplatform.