jetc.dev Newsletter Issue #274
Published: 2025-07-22
New BOMs and a new Compose beta, featuring the ever-popular bug fixes!
In addition, we look at Canvas()
benchmarking, PausableComposition
, an
AnnotatedString
wrapper, and a timetable implementation.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
The Compose BOMs are up to 2025.07.00
.
The beta BOM points to 1.9.0-beta03
, containing a few minor bug fixes. With luck,
Compose 1.9.0
will proceed shortly to an RC.
The core Compose Material3 artifact is up to 1.4.0-alpha18
,
with a variety of API changes.
TV Material is up to 1.0.1
, with
some bug fixes.
Wear Compose is out with 1.5.0-beta06
,
also with some bug fixes.
And we got updates to some Compose-adjacent artifacts:
androidx.camera:camera-compose:1.5.0-beta02
androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta03
androidx.lifecycle:lifecycle-runtime-compose:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-jvmstubs:2.9.2
androidx.lifecycle:lifecycle-runtime-compose-linuxx64stubs:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-jvmstubs:2.9.2
androidx.lifecycle:lifecycle-viewmodel-compose-linuxx64stubs:2.9.2
androidx.media3:media3-ui-compose:1.8.0-rc01
androidx.navigation:navigation-compose:2.9.2
androidx.navigation:navigation-compose-android:2.9.2
androidx.navigation:navigation-compose-jvmstubs:2.9.2
androidx.navigation:navigation-compose-linuxx64stubs:2.9.2
androidx.navigation:navigation-fragment-compose:2.9.2
androidx.pdf:pdf-compose:1.0.0-alpha10
androidx.savedstate:savedstate-compose:1.3.1
androidx.savedstate:savedstate-compose-android:1.3.1
androidx.savedstate:savedstate-compose-jvmstubs:1.3.1
androidx.savedstate:savedstate-compose-linuxx64stubs:1.3.1
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
What Is the Best Way to Load a String Resource?
Compose for Android offers two main ways of obtaining the value of a string resource:
stringResource()
and LocalContext.current.getString()
. See the difference, and why
stringResource()
often is the better answer, in this week’s highlighted Stack Overflow
question.
How Can We Benchmark Canvas()
Drawing Time?
Many developers would like to do A/B tests on implementations to determine if there is
a performance advantage. That gets a bit tricky in Compose, above and beyond all the
standard trickiness of benchmarking UI performance. Learn a bit more, in the context
of Canvas()
brushes and shaders, in this week’s highlighted Kotlinlang #compose
Slack
thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Exploring PausableComposition internals in Jetpack Compose
Shreyas Patil
(Mastodon, Bluesky)
is back, looking at the new PausableComposition
construct in Compose Runtime.
This includes peeling back the covers on RecordingApplier
and how this is being
employed in LazyList()
-based composables like LazyColumn()
.
Medium: StyledString: A Better Pattern for Rich Text in Jetpack Compose
Eury Pérez Beltré was annoyed by the AnnotatedString
DSL, which makes simple things
simple and hard things hard. In particular, styling portions of externally-supplied
text is a bit of a headache. Eury’s response was to create a StyledString
that
aims to hide a lot of that complexity.
Medium: Android Adaptive Design (Part 3): Supporting Desktop-Class Input
Tanish Ranjan has been exploring adaptive layouts in Compose and their ramifications. After looking at basic screen size support and foldables, Tanish starts examining supporting more desktop-style forms of input in Compose for Android, including keyboard shortcuts and a wider range of mouse clicks.
Other Interesting Links
- Medium: Creating a Cross-Platform App with Kotlin Multiplatform and Shared UI in Compose Multiplatform
- Medium: Creating Beautiful Nested Arcs with Jetpack Compose Canvas API
- Medium: Dotify | Rendering Retro Style Text in Compose with Bitmaps
- Medium: Easiest Way to Create a Shimmer Effect in Jetpack Compose
- Medium: Flashlight‑Style Overlay in Jetpack Compose: Spotlighting UI with Hints
- Medium: Fragment Navigation to Navigation 3 Compose
- Medium: How LazyColumn Works Under the Hood in Jetpack Compose (with Performance Tips)
- Medium: Jetpack Compose for Desktop — Overview & Example
- Medium: List state restoration
- Medium: Smooth Like Butter: Mastering Spring & Tween Animations in Jetpack Compose
- Medium: Understanding derivedStateOf in Jetpack Compose : Optimize your recompositions
Resource Roundup
100% pure code!
Composables Reference
As Alex Styl (Bluesky) put it “I was tired of digging the internet for documentation on compose, so I built my own”. It is focused on composables and modifiers, making it easier to browse than the official documentation.
GitHub: MoyuruAizawa / LazyTimetable
Moyuru Aizawa created a timetable composable: a column-oriented staggered grid with pinned labels, designed for conference schedules and the like. It offers bi-directional scrolling, generates the grid based on event durations, offers a rich slot API, and more. Available for Compose for Android.
GitHub: Nerojust / JetImagePicker
Nyerhovwo Adjekughene created an image picker framework for Compose for Android image picker system, supporting obtaining images from both the camera and from existing images (gallery). It handles runtime permissions, offers multiple image selection, etc.
GitHub: kamyab9k / KamVision
kamyab khosravi is building a Compose for Android wrapper around the Camera2 API, including frame capture support.
Other Interesting Resources
- GitHub: MohammadSadeghMehrafzoon / ComposeDatePicker (Persian date picker)
- GitHub: ryadomtech / origami (Compose Multiplatform image cropper)
Notable Releases
Maps for Compose is up to 6.7.0
,
adding a new BitmapDescriptor
option on AdvancedMarker
Horologist is out with a v0.8.0-alpha
release,
with new media components and updated dependencies.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-07-08: Compose BOMs! Wear Compose and Compose Multiplatform updates! Nav3! ExoPlayer! Datatables! And... can we transmogrify Compose for Android into Compose Multiplatform?!?
- 2025-07-01: Nav3! Autofill! Server-side rendering! And... Compose alpha BOM, where were you?!?
- 2025-06-24: Compose production and beta releases! Compose Multiplatform patch! TextFieldState! Nav3! Androidify! Rive! And... can we go edge-to-edge on iOS?!?