jetc.dev Newsletter Issue #283

Published: 2025-09-30

We have new patch releases and new alphas of Compose and Wear Compose, plus a stable Compose Material3 release!

Beyond that, we look at Material Symbols, MapLibre for Compose Multiplatform, and floating action menus. Plus, we see an Illustrator-compatible image-tiling modifier for Compose Multiplatform, and we see how to set up rows that are responsive but with constraints on how many items can be in the row.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose BOMs are up to 2025.09.01. The production BOM mostly contains 1.9.2 patch releases, mostly to fix some bugs in onVisibilityChanged().

The alpha BOM mostly points to 1.10.0-alpha04 releases. The changes include:

  • A new RetainScopeHolder to organize RetainScopes with different retention periods

  • A new RetainedEffect, akin to DisposableEffect but tied to the retention lifecycle

  • Adding ScrollIndicatorState to things like LazyListState and ScrollState

  • Adding onVisibilityChangedNode() for building modifiers atop onVisibilityChanged()

Compose Material3 1.4.0 is out, representing a new stable release.

Wear Compose has a 1.5.2 patch release, with a few bug fixes. Wear Compose also has a 1.6.0-alpha02 release, adding text-warping support in CurvedTextStyle.

Finally, these Compose-related artifact updates were released:

  • androidx.activity:activity-compose:1.12.0-alpha09
  • androidx.lifecycle:lifecycle-runtime-compose:2.10.0-alpha04 (and multiplatform targets)
  • androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0-alpha04 (and multiplatform targets)
  • androidx.navigation:navigation-compose:2.9.5 (and multiplatform targets)
  • androidx.navigation:navigation-fragment-compose:2.9.5
  • androidx.navigationevent:navigationevent-compose:1.0.0-alpha09 (and multiplatform targets)

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

Why Does My Enum Argument Crash Nav on iOS?

Sometimes, @Serializable apparently is not enough for an enum class to be usable directly, without a custom NavType. At least in some cases, it will work on Android but not on iOS, crashing with a could not find any NavType for argument error. See an example, and how to work around the problem, in this week’s highlighted Stack Overflow question.

How Can I Have Exactly 2 or 4 Items Per Row?

FlowRow() is great for responsive UIs, as it can readily adapt to the available width. However, FlowRow() assumes that you can have an arbitrary number of items per row. Suppose you have constraints, such as there needs to be either 2 or 4 items per row, depending on whether 4 will fit. See some possible solutions in this week’s highlighted Kotlinlang #compose Slack thread.

Composable Commentary

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

The Icons Are Dead, Long Live the Icons!

In Mastodon and Bluesky, Google’s Rebecca Franks points out that androidx.compose.material.icons has been discontinued and steers developers towards Material Symbols. FWIW, last week’s newsletter had an item about a Gradle plugin for importing Material Symbols.

Medium: Exploring 5 Lesser-Known Compose Components

Domen Lanišnik (Bluesky) walks us through a few Compose Material3 composables that designers might have missed, such as tri-state checkboxes, segmented buttons, and range sliders.

Medium: Maps with Compose Multiplatform Part 1

Youssef Mohamed spends a couple of posts (Part 2) showing how to integrate MapLibre for Compose into a Compose Multiplatform project.

Exploring Material 3 for Compose: Floating Action Button Menu

Joe Birch (Mastodon) gives us a quick tour of FloatingActionButtonMenu() for the FAM pattern, where tapping a floating action button (FAB) opens up a menu of buttons to choose from.

Resource Roundup

100% pure code!

GitHub: Infinite-Retry / Cwackers

GitHub user Infinite-Retry brings us a tiledBackground() offering a variety of tiling modes for image tiling, with an objective of better matching tiling modes defined in Adobe Illustrator. This library supports all major Compose Multiplatform platforms.

Notable Releases

Maps for Compose is up to 6.11.0, with a few minor improvements.

Molecule released 2.2.0, beginning the migration to the multiplatform AndroidX Compose runtime.