jetc.dev Newsletter Issue #279

Published: 2025-09-02

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

In addition, we see what’s in store for Compose Multiplatform, play with shadows, and poke at Nav3.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose BOMs are up to 2025.08.01. The alpha BOM will focus on 1.10.0-alpha02 of the main Compose artifacts, which include:

  • A new @DoNotRetain annotation to indicate types that are incompatible with retain semantics

  • A new ScrollIndicatorState

  • More improvements to autofill

  • Support for running tests on a StandardTestDispatcher

Glance is up to 1.2.0-beta01… just bumping the minSdk from 21 to 23. 🤷🏻

The Wear Compose 1.5.0 is out! 🎉

Nav3 is up to 1.0.0-alpha08, and the following Compose-adjacent artifacts received updates:

  • androidx.activity:activity-compose:1.12.0-alpha07
  • androidx.hilt:hilt-lifecycle-viewmodel-compose:1.3.0-rc01
  • androidx.hilt:hilt-navigation-compose:1.3.0-rc01
  • androidx.lifecycle:lifecycle-runtime-compose:2.10.0-alpha03 (plus multiplatform artifacts)
  • androidx.lifecycle:lifecycle-runtime-compose:2.9.3 (plus multiplatform artifacts)
  • androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0-alpha03 (plus multiplatform artifacts) (plus multiplatform artifacts)
  • androidx.lifecycle:lifecycle-viewmodel-compose:2.9.3 (plus multiplatform artifacts)
  • androidx.navigationevent:navigationevent-compose:1.0.0-alpha07 (plus multiplatform artifacts)
  • androidx.paging:paging-compose:3.4.0-alpha03 (plus multiplatform artifacts)
  • androidx.savedstate:savedstate-compose:1.3.2 (plus multiplatform artifacts)
  • androidx.savedstate:savedstate-compose:1.4.0-alpha03 (plus multiplatform artifacts)

In addition, JetBrains released 1.9.0-rc01 of Compose Multiplatform, as we get close to a stable release.

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

Why Is rotate() Resulting In the Wrong Size?

The rotate() rotates the rendering, not the sizing, of a composable. If your composable is not square, this can lead to issues, such as the rotated result being croppped or not seeming to fill the available space. See one approach for getting past this limitation in this week’s highlighted Stack Overflow question.

Can I Modify a MutableState on a Background Thread?

The answer is “yes, but only if you do it carefully”. You can encounter a race condition if you create the state and attempt to update it on a background thread before the composition encompassing the state gets applied. Learn more in this week’s highlighted Kotlinlang #compose Slack thread.

Composable Commentary

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

Designing with personality: Introducing Material 3 Expressive for Wear OS

Google’s Chiara Chiappini and Kevin Hufnagle shows how the latest release of Wear Compose adds support for Material 3 Expressive for watch activities and tiles.

What’s Next for Kotlin Multiplatform and Compose Multiplatform – August 2025 Update

JetBrains’ Emil Flach explains how the multiplatform universe is coming along, including a forthcoming Compose for Web beta release and better support for @Preview annotations in common.

New Shadow API for Jetpack Compose

sinasamaki (Mastodon, Bluesky) explores the new dropShadow() and innerShadow() modifiers, including where they should be applied in modifier chains, how to control the shape and other properties, how to switch from a shadow effect to a glow effect, and more.

3 unique predictive back animations you can create with the navigation events library

TJ Dahunsi (Bluesky) shows us how to create swipe-to-pop, drag-to-pop, and sticky shared element transitions for use with predictive back animations in Nav3.

Medium: Side-Effects in Jetpack Compose Made Simple

Ioannis Anifantakis takes a deep dive into various side-effects in Compose, reviewing for each whether they start a coroutine, when they fire, when to use and avoid them, and more.

Exploring Navigation 3 for Jetpack Compose

Joe Birch (Mastodon) takes a peek at Nav3, including backstack management, routes and data, tying routes to screens, and saving navigation state inside of a ViewModel.

Resource Roundup

100% pure code!

GitHub: mooncloak / statex

GitHub user mooncloak brings us a Jetpack-free multiplatform ViewModel with integrated state management and easy Compose integration.

GitHub: ampfarisaho / pathfinder

Ampfarisaho Maphangwa has created a lightweight Compose navigation layer atop of Nav3, supporting Compose for Android. It includes optional Hilt support, back stack management, type-safe navigation, and more.

GitHub: SaifulSaif007 / CustomBottomNavBar

Saiful Islam offer us an “animated and customizable bottom navigation bar” for Compose for Android, with a configurable look-and-feel.

Notable Releases

Horologist is up to 0.8.2-alpha, with performance improvements and an “API for capturing composable in Tiles”.

Compose Unstyled bounded straight to 1.43.1, adding Stack(), defaultMinimumComponentInteractiveSize, and currentWindowContainerSize.

Compose WebView Multiplatform is now out with 2.0.3, mostly with bug fixes.

…And One More Thing

While this is not strictly related to Compose, I wrote a post with questions about the Android developer authentication program.