jetc.dev Newsletter Issue #287
Published: 2025-10-28
This week, we got a new Compose patch release, plus our first beta of 1.10. We peek
at those, along with the next alpha of Compose Multiplatform and updates to Wear Compose.
In addition, we examine composable overlays and surfaces, get inked, and have some tartlets.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
The Compose BOMs are up to 2025.10.01. The production BOM should point to 1.9.4
of the major Compose artifacts, with some bug fixes. The beta BOM should point to 1.10.0-beta01, as the 1.10 series picks up steam.
Of note:
-
ScaleToBounds()was removed, replaced by thescaleToBounds()modifier -
A bunch of “retain” types were renamed, such as
RetainScopebeing renamed toRetainedValuesStoreandRetainScopeHolderbecomingRetainedValuesStoreRegistry -
Various other APIs were renamed for consistency
Compose Material3 is up to 1.5.0-alpha07, with some bug fixes.
Compose Material3 Adaptive has a stable 1.2.0 release, along with a 1.3.0-alpha02
release.
Wear Compose has a 1.5.4 patch, with a few bug fixes. Wear Compose also has a
1.6.0-alpha04 release, offering reverseLayout for TransformingLazyColumn() and
bug fixes.
We also got updates to:
androidx.activity:activity-compose:1.12.0-beta01androidx.camera:camera-compose:1.6.0-alpha01androidx.camera.viewfinder:viewfinder-compose:1.6.0-alpha01androidx.ink:ink-authoring-compose:1.0.0-beta01androidx.ink:ink-authoring-compose-android:1.0.0-beta01androidx.ink:ink-brush-compose:1.0.0-beta01androidx.ink:ink-brush-compose-android:1.0.0-beta01androidx.ink:ink-geometry-compose:1.0.0-beta01androidx.ink:ink-geometry-compose-android:1.0.0-beta01androidx.lifecycle:lifecycle-runtime-compose:2.10.0-beta01(and multiplatform targets)androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0-beta01(and multiplatform targets)androidx.media3:media3-ui-compose:1.9.0-alpha01androidx.media3:media3-ui-compose-material3:1.9.0-alpha01androidx.pdf:pdf-compose:1.0.0-alpha11androidx.savedstate:savedstate-compose:1.4.0-rc01(and multiplatform targets)
Note that androidx.media3:media3-ui-compose-material3 is brand new.
Finally, JetBrains released [1.10.0-alpha03 of Compose Multiplatform]. The new
text context menus have been temporarily disabled, and JetBrains is standardizing
on androidx.compose.ui.tooling.preview.Preview to reduce the number of Preview
annotations. In addition, there are your usual suite of bug fixes and updates.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Can I Handle Both One-Finger and Two-Finger Gestures?
Simple gesture detection is reasonably easy in Compose UI. However, things can get messy
quickly, especially if you are trying to support multiple gestures at once. See how to
handle both one-finger and two-finger gestures in a single pointerInput() in this
week’s highlighted Stack Overflow question.
Why Won’t My Window Stay Dark?
Compose Multiplatform is slick, but occasionally we will run into problems with the
integration with the underlying platform. See how Compose for Desktop requires a bit of
work to keep dark mode windows dark when they are resized, in this week’s highlighted
Kotlinlang #compose-desktop Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Medium: Using Jetpack Compose DrawScope for Custom Overlays
Steven de Tilly writes about crafting overlays for composables. While a common scenario for this is highlighting and explaining some UI in an onboarding flow, Steven instead looks at a chat app, where you want to allow for applying reactions to messages via a popup emoji picker, where the message is still shown normally but the rest of the UI being dimmed.
Medium: Demystifying Android’s Surface: Your Secret Weapon for High-Performance Graphics
Akshat Divekar explores rendering to a Surface from Compose for Android by
way of AndroidView() wrapping a SurfaceView. Surface
is very low-level, but it has interesting cross-process uses, since a Surface
can be passed via AIDL or Intent extras, as it is Parcelable.
Medium: Compose for DI?
When we think of “Compose”, the tendency is to focus on Compose UI, the stuff that renders user interfaces. Emmanuel Ortiguela explains how the underlying Compose engine can be used for things beyond Compose UI, in this case creating a dependency injection framework driven by composables.
Medium: Practicing Shadows in Jetpack Compose — Elevation, Drop Shadow
Mingyu Kim demonstrates shadow rendering in Compose UI, not only using the shadow()
modifier, but also creating custom modifiers powered by drawBehind() that implement
custom drop shadows.
Video: Supporting stylus input on Android using Jetpack Ink
Thomas Künneth (Mastodon, Bluesky) delivered a presentation for droidcon Berlin 2025 on using Jetpack Ink for stylus input from a Compose UI-based app.
When common refactoring breaks the compose chain
Lyubomir Ganev
(Mastodon)
explains how extracting out a composable sometimes leaves it with
plain data, not State, and so it is no longer capable of reacting to changes in that
state as it did before.
Other Interesting Links
- Medium: Building a Beautiful Linear and Grid Calendar for Jetpack Compose — Introducing XCalendar
- Medium: Deep Dive: Understanding Stable and Immutable State in Jetpack Compose
- Medium: Eliminating Jank in Composables: 3 Practical Techniques for Smooth Jetpack Compose UI
- Medium: Inside MVI: Managing State Like a Pro in Jetpack Compose
- Medium: Mastering Android Runtime Permissions in Jetpack Compose with Accompanist Permissions
- Video: A Year of Compose Multiplatform Preview Tooling Improvements - We’re Almost There
Resource Roundup
100% pure code!
GitHub: yumemi-inc / Tartlet
YUMEMI Inc. created an MVVM framework for Compose Multiplatform designed to minimize the number of callbacks one needs to pass down from parent to child composables.
GitHub: composablehorizons / compose-ripple-indication
Alex Styl (Bluesky) brings us a standalone implementation of the Material-style ripple animation for use in indications, for Compose Multiplatform.
Other Interesting Links
- GitHub: avan1235 / compose-extensions (calendar and QR code detector for Compose Multiplatform)
- GitHub: ivanioffe / one-time-password (OTP input for Compose for Android)
- GitHub: Taz03 / compose-web-navigator (navigation for Compose for Web/Wasm)
Notable Releases
Compose Unstyled 1.46.1
expands its ColoredIndication support, among other changes.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-10-21: Gap buffers! Organizing previews! Liquid Glass! Custom design systems! And lots of stuff from Jaewoong Eum!
- 2025-10-14: New Compose BOMs! New Compose Multiplatform alpha! Nav2 -> Nav3 migration! Keys and lazy containers! Coachmarks! And... do we really want our UI to glitch?!?
- 2025-10-07: Nav graph diagrams! Native code in Compose Multiplatform! Modifier.Node API! Multiplatform maps! And... how do we bust drawWithCache()?!?