jetc.dev Newsletter Issue #256
Published: 2025-03-11
I’m back! 👋🏻
We got a new Compose beta and a Compose Multiplatform alpha, so let’s see what they are about!
In addition, we look at hot reload, mesh gradients, and strong skipping. Plus, we look at a library to simplify permissions and several releases to notable libraries.
Also, FYI and ICYMI, Figma Relay is going away soon. This is why I use hand-crafted small-batch bespoke Figma-to-Compose conversions, referred to more commonly as “just code it”.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
Back before my vacation, 1.8.0-beta03
of the main Compose artifacts dropped.
Mostly, this seems to be bug fixes, as expected of a third beta. However,
a couple of accessibility-related API changes
snuck in as well.
We got seven new artifacts, for Compose testing and Navigation for Compose:
androidx.navigation:navigation-compose-android
androidx.navigation:navigation-compose-jvmstubs
androidx.navigation:navigation-compose-linuxx64stubs
androidx.compose.ui:ui-test-accessibility
androidx.compose.ui:ui-test-accessibility-android
androidx.compose.ui:ui-test-junit4-accessibility
androidx.compose.ui:ui-test-junit4-accessibility-android
We also got the following updates to Compose-adjacent artifacts:
androidx.activity:activity-compose:1.10.1
androidx.camera:camera-compose:1.5.0-alpha06
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13
androidx.constraintlayout:constraintlayout-compose:1.1.1
androidx.constraintlayout:constraintlayout-compose-android:1.1.1
androidx.lifecycle:lifecycle-runtime-compose:2.9.0-alpha11
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.0-alpha11
androidx.lifecycle:lifecycle-runtime-compose-jvmstubs:2.9.0-alpha11
androidx.lifecycle:lifecycle-runtime-compose-linuxx64stubs:2.9.0-alpha11
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0-alpha11
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.0-alpha11
androidx.lifecycle:lifecycle-viewmodel-compose-desktop:2.9.0-alpha11
androidx.media3:media3-ui-compose:1.6.0-beta01
androidx.navigation:navigation-compose:2.8.8
androidx.navigation:navigation-compose:2.9.0-alpha07
androidx.navigation:navigation-compose-android:2.9.0-alpha07
androidx.navigation:navigation-compose-jvmstubs:2.9.0-alpha07
androidx.navigation:navigation-compose-linuxx64stubs:2.9.0-alpha07
androidx.navigation:navigation-fragment-compose:2.8.8
androidx.navigation:navigation-fragment-compose:2.9.0-alpha07
androidx.savedstate:savedstate-compose:1.3.0-alpha09
androidx.savedstate:savedstate-compose-android:1.3.0-alpha09
androidx.savedstate:savedstate-compose-jvmstubs:1.3.0-alpha09
androidx.savedstate:savedstate-compose-linuxx64stubs:1.3.0-alpha09
In addition, JetBrains released 1.8.0-alpha04
of Compose Multiplatform. This release boosts Compose for Desktop performance,
adds a bunch of iOS features, and reverts Material3 due to a timing issue between
Google and JetBrains releases.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Can We React to Desktop Theme Changes?
isSystemInDarkTheme()
works great for Android and iOS. It works…
less great for desktop platforms.
But there are workarounds, as we see in this week’s highlighted Stack Overflow
question.
Is Reloading Hot?
JetBrains’ Compose Hot Reload
is now available on Maven Central.
Sebastian Sellmair
(Mastodon, Bluesky)
calls for feedback and gets some, in this week’s highlighted
Kotlinlang #compose-desktop
Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Video: Compose runtime and performance
The Android Developers Backstage crew talked to Chuck Jazdzewski (Bluesky) and Leland Richardson (Bluesky) from the Compose team to discuss an ever-popular topic in Compose development: app performance. They feel our pain and discuss recently-implemented and upcoming improvements to help us out!
Video: Making Gradients Easy!
The Code with the Italians team talked with Google’s Chris Sinco (Bluesky) about Mesh. Mesh is a Compose for Desktop tool to help build mesh gradients for Compose, based on sinasamaki’s mesh gradient code.
SoundCloud uses Jetpack Glance to build Liked Tracks widget in just 2 weeks
Google’s Summers Pittman wrote a summary about Soundcloud’s success with using Glance to quickly implement an app widget using composables.
Strong skipping does not fix Kotlin collections in Jetpack Compose
We like skipping composables when inputs do not change, which is why we (generally) like the new strong skipping mode, which does a better job of inferring which types are stable and can be skipped. As Jorge Castillo (Mastodon, Bluesky) points out, though, this does not completely resolve problems, especially with standard Kotlin collections.
Medium: Composing with Accessibility in Mind: Because Every User Matters! — Part 1
Bhoomi Vaghasiya Gadhiya walks us through several accessibility-related options
in Compose, from contentDescription
on Image()
to onClickLabel
on the
clickable()
modifier.
Other Interesting Links
- Medium: @Preview the Compose Way
- Medium: Bridging Compose and View: Seamless Interop Communication with CompositionLocal
- Medium: Building Responsive UIs in Jetpack Compose with SDP and SSP
- Medium: Creating a Dynamic Country Selector in Jetpack Compose
- Medium: For Beginners : Building a Simple MVI Project with Jetpack Compose in Kotlin
- Medium: Passing Results Between Screens in Jetpack Compose: Implementing the navigateForResult Extension Function
- Medium: Understanding Every Parameter in Column in Jetpack Compose
- Medium: Understanding LaunchedEffect in Jetpack Compose
- Medium: Unlock Pull-to-Refresh in LazyColumn with This Simple Jetpack Compose Trick!
- Medium: Using Screenshot Tests in a Compose Multiplatform App
Resource Roundup
100% pure code!
GitHub: meticha / permissions-compose
The Meticha team brings us a library for simplifying the act of requesting runtime permissions in Compose for Android apps, handling both required and optional permissions.
GitHub: lmbotero / PullToRefresh
Luis Miguel Botero Tobon created a Compose Multiplatform Material3-based pull-to-refresh implementation that supports Android, iOS, and desktop.
GitHub: adamglin0 / compose-continous-rounded-corner-shape
GitHub user adamglin0 created a Compose Multiplatform
ContinuousRoundedCornerShape
, offering a custom
smooth
parameter, to better align with the iOS design system.
Notable Releases
Horologist has a 0.6.23
release,
for dependency updates.
Maps for Compose is up to 6.5.0
,
adding support for Nav for Compose.
Compose Destinations released a stable 2.1.0
,
adapting to KSP2.
Circuit now sports a 0.27.0
release,
offering screen-based animation overrides and some bug fixes.
Compose Unstyled is out with 1.20.1
,
for some bug fixes.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-03-11: Compose beta! Compose Multiplatform alpha! Hot reload! Mesh gradients! Strong skipping! Permissions! And... what happens if our desktop goes dark?!?
- 2025-02-25: Viewmodels and previews! TV Compose! A safer marquee! Server-defined UIs! And... do I have a right to be forgotten?!?
- 2025-02-18: New Compose and Compose Multiplatform! Focus! Accordion animations! Skeuomorphic design! Detecting idle users! And... somebody sunk my Fleet?!?