jetc.dev Newsletter Issue #289

Published: 2025-11-11

We got a new Compose beta and new Compose Multiplatform patches and betas!

Beyond that, we try to wait, lament the clear-cut logging of redwoods, and pretend that our screen is really really old. Also, we see an IDE plugin that helps tell us if we are stable, in real time!

:: glances at plugin output ::

Hey, what do you mean I’m unstable?!?

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose BOMs are up to 2025.11.00. The production BOM contents should be unchanged, but the beta BOM will point to 1.10.0-beta02 of the major artifacts. Mostly, this release contains breaking API changes for custom RetainedValueStore implementations, along with many other changes to the RetainedValuesStore approach.

Compose Material3 is up to 1.5.0-alpha08, with minor changes. Compose Material3 Adaptive is up to 1.3.0-alpha03, also with minor changes.

Wear Compose is out with 1.5.5, with a fix to help TimePicker number visibility on small screens.

Updates to Compose-related artifacts include:

  • androidx.activity:activity-compose:1.12.0-rc01
  • androidx.lifecycle:lifecycle-runtime-compose:2.10.0-rc01 (and multiplatform targets)
  • androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0-rc01 (and multiplatform targets)
  • androidx.navigation:navigation-compose:2.9.6 (and multiplatform targets)
  • androidx.navigation:navigation-fragment-compose:2.9.6
  • androidx.navigationevent:navigationevent-compose:1.0.0-rc01 (and multiplatform targets)
  • androidx.savedstate:savedstate-compose:1.4.0 (and multiplatform targets)

In terms of Compose Multiplatform, JetBrains released 1.9.3, fixing an iOS crash. JetBrains also shipped 1.10.0-beta01, which bundles the Compose Hot Reload functionality with their standard Compose Gradle plugin. This blog post lists the major improvements in this latest beta.

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

How Can We Wait?

Sometimes, we need a composable to do something after a certain period of time. Personally, I would handle this with an updated state in the viewmodel, but there will be cases where the delay is purely a UI concern. See how to properly use LaunchedEffect() to handle this in this week’s highlighted Stack Overflow question.

Can I Use Browser Fonts in Compose for Web?

This seems like it should be straightforward: the browser has fonts, so Compose for Web should be able to render them. Alas, this is not possible. Learn more in this week’s higlighted Kotlinlang #compose-web Slack thread.

Composable Commentary

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

Redwood Fall Down, Go Boom

Redwood is CashApp’s framework for building platform-native UIs using composables. Alas, Redwood has been discontinued, as announced by Jake Wharton (Mastodon).

Medium: How to Dynamically Modify SVGs in Jetpack Compose Using Coil

Angela Dimovska demonstrates how Coil allows us to plug into the SVG rendering pipeline, and we can use that hook to do things like change colors on the fly.

Medium: Understanding Flow Collection in Jetpack Compose

Dnyaneshwar Patil walks us through various ways of collecting flows from a composable, from collectAsState() and collectAsStateWithLifecycle() to produceState() and LaunchedEffect().

Creating a CRT Screen Effect in Jetpack Compose

sinasamaki (Mastodon, Bluesky) is back, once again using graphicsLayer() for fun effects. In this case, the objective is to render a UI as if it were being viewed on an old green low-resolution CRT monitor. I remember when those monitors were cutting-edge. Yes, I’m old.

Resource Roundup

100% pure code!

GitHub: skydoves / compose-stability-analyzer

Jaewoong Eum (Mastodon, Bluesky) is working on an IDE plugin to provide gutter hints as to which of our types are unstable, etc. The idea is to give performance-related info in real time while editing the code. See also this Medium post on the project.

GitHub: guimauvedigital / ant-design-kmp

The Guimauve Digital team is building out a complete Compose Multiplatform implementation of the Ant Design design system.

GitHub: anthonyhfm / kowe

Anthony Hofmeister is creating a Compose Multiplatform wrapper around platform-specific Web views, supporting Android, iOS, and desktop targets.

GitHub: wooongyee / komvi

Jae Woong brings us an MVI architecture framework powered by KSP to help with compile-time checks for invalid MVI contracts.

Notable Releases

Circuit is up to 0.31.0. Result handling is now decoupled from the backstack implementation, resetRoot() now takes a StateOptions parameter, and other changes are included in this release.

Compose Unstyled is out with 1.47.2, with a few bug fixes. Also, see Alex Styl’s post about the 1.47.* series.