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 withretain
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
.
Other Interesting Links
- Medium: 40+ common Jetpack Compose quick-fix issues
- Medium: Avoiding Memory Leaks in Android Jetpack Compose
- Medium: Compose vs. Views: The Layout Awakens
- Medium: Flow Layouts in Compose
- Medium: Jetpack Compose Made Easy: The 10 Modifier Properties You Can’t Ignore
- Medium: Jetpack Navigation 3
- Medium: Mastering State Management in Jetpack Compose: A Comprehensive Guide
- Medium: Nested routes with Navigation 3
- Medium: State in Jetpack Compose: A Guide to Building UIs That Just Work
- Medium: Stop Writing Clunky UIs. Jetpack Compose Animations Are Easier Than You Think.
- Medium: The Hidden Performance Trap in Your Jetpack Compose Modifiers
- Medium: Why ConstraintLayout in Jetpack Compose Will Save Your UI (and Your Sanity)
- Taming Surface: A Guide to Sizing Composables
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.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-08-26: Compose 1.9.0! Wear Compose RC! Compose Multiplatform beta! Kobweb! Modifier order! String and icon wrappers! And... why is it tough to remember when and how to remember()?!?
- 2025-08-10: produceState() problems! RetainedEffect()! Compose Unstyled! And... I'm going to be AFTNK (away from this newsletter's keyboard) for a bit!
- 2025-08-05: Compose and Wear Compose RCs! Compose Multiplatform previews! Keyboard shortcuts! Animated text diffs! And... why do we key()?!?