jetc.dev Newsletter Issue #272
Published: 2025-07-08
This week, we get another pair of BOMs, a new Wear Compose, and a new Compose Multiplatform — let’s check them out!
After that, we look at Android Studio tooling, Nav3, and ExoPlayer/Media3. Plus, we see a Material Design datatable implementation, along with a tool that helps migrate Compose for Android projects to Compose Multiplatform.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
The Compose alpha and beta BOMs were updated to 2025.06.02
. The beta BOM
now points to 1.9.0-beta02
. Compose Foundation now supports “smart items in context menu and selection toolbar”,
but overall this beta release, as expected, was mostly bug fixes.
Wear Compose is up to 1.5.0-beta05
, also containing a handful of bug fixes.
The following Compose-related artifact versions were released:
androidx.activity:activity-compose:1.12.0-alpha04
androidx.media3:media3-ui-compose:1.8.0-beta01
androidx.navigation:navigation-compose:2.9.1
androidx.navigation:navigation-compose-android:2.9.1
androidx.navigation:navigation-compose-jvmstubs:2.9.1
androidx.navigation:navigation-compose-linuxx64stubs:2.9.1
androidx.navigation:navigation-fragment-compose:2.9.1
androidx.navigationevent:navigationevent-compose:1.0.0-alpha04
androidx.navigationevent:navigationevent-compose-android:1.0.0-alpha04
androidx.navigationevent:navigationevent-compose-jvmstubs:1.0.0-alpha04
androidx.navigationevent:navigationevent-compose-linuxx64stubs:1.0.0-alpha04
Finally, JetBrains released 1.9.0-alpha03
of Compose Multiplatform,
bringing us
customizable shadows, some more Swing integration hooks for Compose for Desktop,
and keepScreenOn
support for iOS, along with bug fixes.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Can I Use SVGs For My Compose UI?
SVGs are a great format for vector artwork to use in Compose… but then you need to decide how to actually use them. One developer tried two approaches (vector drawable resources and Valkyrie) and got confused by both of them. I tried to lend a hand, in this week’s highlighted Stack Overflow question.
What Happens with Conditional Calls to remember()
?
Suppose you have an if
/else
branch, and you remember()
a value in one of the two
branches. What happens when, on a recomposition, you go down the other branch? Does the
remember()
get retained, discarded, or sucked into a rip in the space-time continuum?
See the answer in this week’s highlighted Kotlinlang #compose
Slack thread! NOTE: no
actual space-time continua were harmed in the creation of this newsletter (AFAIK).
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Video: Embedded Layout Inspector
Google’s Paris Hsu looks at Android Studio’s Embedded Layout Inspector, explaining how to get to it and how to use it to help you debug your composables.
Medium: Migrating to Jetpack Compose Navigation 3
Stefano Natali
Bluesky
takes us through the steps to migrate a codebase from Nav for Compose
2.8.0
-era code to using Nav3. This includes defining the NavKey
interface implementations
for our routes, converting a NavHost()
into a NavDisplay()
, etc.
Medium: Getting Started With EXO Player in Jetpack Compose
Siva Ganesh Kantamani shows us how to use ExoPlayer in a Compose for Android project,
including a PlayerSurface()
for video playback, playback controls, and content
management handling in a viewmodel.
Video: Building a Modern Kotlin Multiplatform Application with Compose Multiplatform and Koin
In an Android Makers presentation, Arnaud Giulani walks us through a case study of converting Google’s “Now in Android” app to use Compose Multiplatform, with Koin serving as the dependency inversion framework.
Other Interesting Links
- Medium:
mutableStateOf
— Is Just the Start: Unlocking the Jetpack Compose State Toolbox - Medium: Building an Animated Semi-Circle Progress Indicator in Jetpack Compose: A Deep Dive
- Medium: Is this a first nail in the ViewModel’s coffin?
- Medium: Managing state across navigation in Jetpack Compose
- Medium: Modern Android Navigation Made Simple with Navigation 3
- Medium: Navigation Result in Compose: A Problem Google Won’t Solve (But I Did)
- Medium: Responsive Design (Part 1): Make any Compose Screen Responsive in 4 Steps
- Medium: What is Recomposition in Jetpack Compose?
- Medium: Why Side Effects Are the Secret Sauce of Jetpack Compose
Resource Roundup
100% pure code!
GitHub: dufacoga / MaterialDataTableLibrary
Douglas Farid Cortes Garcia created a MaterialDataTableC()
composable for a Material Design 3-style
data table, complete with support for scrolling, pagination, responsive sizing of columns,
per-row edit/delete actions, and more! It presently supports Compose for Android.
GitHub: mori-atsushi / compose-callable
Mori Atsushi created a coroutine-based way to show a dialog and be able to react to its result in sequential statements, as opposed to being split up within a larger composable, to improve readability. It appears to support all Compose Multiplatform targets.
GitHub: MahmoudRH / kmpify
Mahmoud Habib created a desktop tool to help migrate a Compose for Android project to a Compose Multiplatform project, such as by replacing Compose resources, imports, and annotations with CMP equivalents.
GitHub: htandiono / watermark-photo
Hendrik Tandiono brings us a Compose for Android library that wraps CameraX and lets you take a photo, then apply a custom watermark to the image before it is saved.
GitHub: chachako / svg-to-compose-vector
GitHub user chachako created a CLI in Python to generate ImageVector
Kotlin source
code from SVG files, with support for “paths, basic shapes (rect, circle, ellipse, line, polygon), groups, transforms, gradients, and strokes”.
Notable Releases
Circuit is up to 0.29.1
,
with a bug fix in support of Metro.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-06-24: Compose production and beta releases! Compose Multiplatform patch! TextFieldState! Nav3! Androidify! Rive! And... can we go edge-to-edge on iOS?!?
- 2025-06-17: Compose Multiplatform! Server-defined UI! OpenGL in Compose Multiplatform! Collecting signatures! And... can we start off with a bit of focus?!?
- 2025-06-10: Compose and Compose Multiplatform alphas! Material3 Expressive! Lottie testing! Cross-platform ripples! And... *now* can we pick a peck of pickle photos?!?