jetc.dev Newsletter Issue #291

Published: 2025-11-25

We got a Compose patch release, a Compose RC, a stable inaugural release of Nav3 for Compose, and a Compose Multiplatform beta, all in one week!

In addition, we try to write a bit on an angle, play with Media3’s Compose-native UI, and try to get our daily agenda in order.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose BOMs are up to 2025.11.01. The production BOM will point mostly to 1.9.5 artifacts, which contain bug fixes.

The beta BOM probably points to 1.10.0-rc01 artifacts, as we near a 1.10.0 stable release. Mostly, this contains bug fixes, but note that EnterExitTransitions in Compose Material now offer unveilIn and veilOut options.

Compose Material3 is up to 1.5.0-alpha09, adding more options for expressive menus, offer more alignment possibilities for a ButtonGroup(), and more. Compose Material3 Adaptive is up to 1.3.0-alpha04, with bug fixes.

Wear Compose is up to 1.6.0-alpha05, with new sensitivity options for rotary and paging gestures, along with bug fixes.

The following Compose-related artifacts got updates as well:

  • androidx.activity:activity-compose:1.12.0
  • androidx.ink:ink-authoring-compose:1.0.0-beta02
  • androidx.ink:ink-authoring-compose-android:1.0.0-beta02
  • androidx.ink:ink-brush-compose:1.0.0-beta02
  • androidx.ink:ink-brush-compose-android:1.0.0-beta02
  • androidx.ink:ink-geometry-compose:1.0.0-beta02
  • androidx.ink:ink-geometry-compose-android:1.0.0-beta02
  • androidx.lifecycle:lifecycle-runtime-compose:2.10.0 (and multiplatform targets)
  • androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0 (and multiplatform targets)
  • androidx.navigationevent:navigationevent-compose:1.0.0 (and multiplatform targets)

Finally, JetBrains released Compose Multiplatform 1.1.0-beta02. This contains a bunch of bug fixes.

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

Why Is My LinearProgressIndicator() Weird When It Is Wide?

The default way the progress is rendered in a LinearProgressIndicator() is via a circular StrokeCap. Using that, or StrokeCap.Square, causes problems with wide indicators, because the circle or square will match that width and make rendering small or large progress values difficult. See how to avoid this using StrokeCap.Butt in this week’s highlighted Stack Overflow question.

Can We Write Part of an AnnotatedString on an Angle?

Rotating an entire composable is fairly easy, using the rotate() modifier. Rotating a piece of text in the middle of an AnnotatedString is more challenging. See how to address this by switching to onTextLayout() 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 Compose Multiplatform 1.10.0-beta02

As was noted earlier in the newsletter, JetBrains released 1.10.0-beta02 of Compose Multiplatform. This set of release notes covers the entirety of the 1.10.0 release, rather than strictly for beta02.

Jetpack Navigation 3 is stable

Google’s Don Turner announces the stable release of Navigation3 for Compose for Android. The post includes links to the migration guide and recipes site.

Using Navigation 3 with Compose Multiplatform

While Navigation3 for Compose for Android is stable, JetBrains is still working on porting it to Compose Multiplatform. John O’Reilly (Mastodon, Bluesky) reviews its current status and shows how to use it in a multiplatform project.

Medium: From AndroidView to PlayerSurface: Modernizing ExoPlayer with Media3’s Compose UI

Ioannis Anifantakis walks us through using media3-ui-compose to employ ExoPlayer/Media3’s official Compose-based UI. This includes migrating from AndroidView to PlayerSurface, its various state holders, and whether “the juice is really worth the squeeze”.

Resource Roundup

100% pure code!

GitHub: ivk1800 / Riflesso

GitHub user ivk1800 has created a combination library and IntelliJ IDEA plugin to help you visualize recompositions in real time in your actual code. It highlights blocks of code as they recompose, along with showing parameter stability. It works on Compose Multiplatform, supporting Android and desktop targets.

GitHub: pablichjenkov / daily-agenda-component

GitHub user pablichjenkov has created a Compose Multiplatform (all targets) task planner UI, showing appointments across an hourly view of one’s day.

GitHub: yskuem / kmp-onboarding

GitHub user yskuem brings us a wizard-style onboarding framework for Compose Multiplatform (supporting Android and iOS). You define the page content and it handles rendering common elements (e.g., forward/back affordances, headers/footers) for you. See this Medium post for more.

GitHub: 3moly / compose-data-viz

GitHub user 3moly created a Compose Multiplatform (all targets) library that renders a node graph. You supply the definitions of the nodes and their interconnections, and the library handles drawing the graph, including re-rendering based on users dragging nodes, etc.

Notable Releases

Compose Unstyled 1.49.1 and 1.49.2 were for some minor cleanup. Also, see this blog post for more about the 1.49 release series.