jetc.dev Newsletter Issue #280
Published: 2025-09-09
This week, we peek at the next alpha of Compose Multiplatform and debate weight()
in scrollable containers. We look at conditional layouts and sharing shared element
keys. And we explore how we can use composables for audio output.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
While JetBrains’ works on wrapping up 1.9.0
of Compose Multiplatform, they
released the first alpha of 1.10.0
.
These are based on Compose for Android’s 1.10.0-alpha02
releases, plus makes the new
context menu enabled by default and adds a few more “bells and whistles” for iOS and
desktop targets.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Can I Play Lottie Animations in Compose Multiplatform?
Lottie is a popular way to describe animations. See how
Compottie extends Lottie support
to Compose Multiplatform, with an example of using rememberLottieComposition()
,
in this week’s highlighted Stack Overflow question.
Can I Have weight()
in a Scrolling Container?
Right now, weight()
on, say, children of a scrollable Column()
is likely to leave
you with zero height for those children. But if weight()
divides up unused
space, and a scrollable container can be infinitely large, what does weight()
even
mean? See the debate, throwbacks to the classic View
system, and workarounds in
this week’s highlighted Kotlinglang #compose-android
Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Unfold new possibilities with Compose Adaptive Layouts 1.2 beta
Google’s Fahd Imtiaz and Miguel Montemayor review the additions in the beta release
of Compose Adaptive Layouts 1.2.0
, including new layout strategies (e.g., levitate
, reflow
)
and new window size classes.
Medium: Mastering Conditional Layouts in Jetpack Compose: The Flexible Way
Akshat Divekar explores conditional layouts: where you want to render something only if
it fits completely. Akshat demonstrates a GenericConditionalLayout()
, powered by
Layout()
, that efficiently identifies which children can be fully rendered and only
shows them.
Medium: Injecting Android Context in Compose Multiplatform with Koin
On Android, from time to time, your composables will need access to a Context
, but
Context
does not exist on other platforms. Domen Lanišnik
(Bluesky)
shows how to set up platform-specific
Koin modules to enable a Context
to be injected where needed in androidMain
code
without impacting other platforms.
Sharing Shared Element Keys
Adam McNeilly (Mastodon, Bluesky) loves shared element transitions, but points out that they have issues, such as having synchronized keys between screens. Adam’s solution is to include them as part of “display models” (model objects containing the subset of domain data needed for a given screen).
Other Interesting Links
- Make Your KMP App a Share Target: Receive simple data from other applications
- Medium: Building Adaptive Android Apps: The Screen Size Odyssey (Part 1)
- Medium: Changing Status Bar Items Color in CMP / KMP
- Medium: How to Disable Screen Inputs on Android Like a Pro
- Medium: How to Implement Pagination in Jetpack Compose with Paging 3
- Medium: Jetpack Compose Elevation Explained: Tonal, Shadow, and How to Use Them
- Medium: Level-Up Your Compose UI with Animation: 7 Drop-in Patterns (with code)
- Medium: The Hidden Dangers of Jetpack Compose State (And How to Fix Them With Real Examples)
- Medium: Understand the Modifier Order in Jetpack Compose: Why Sequence Matters
Resource Roundup
100% pure code!
GitHub: usuiat / Koruri
Atsushi USUI has created a framework for generating audio output using composables,
alongside user interfaces. For example, SineWave()
is a composable that, inside of a
KoruriContent()
container, outputs a sine wave audio at a specified frequency.
GitHub: eltonkola / bota
Elton Kola has given us a WorldMap()
composable for Compose Multiplatform (Android,
iOS, desktop), to allow users to view and select countries on a map.
GitHub: iVamsi / SnapNotify
Vamsi Vaddavalli has created another snackbar framework, designed to simplify both raising and rendering of snackbar-style notices.
Notable Releases
In rapid succession, the Maps for Android team released 6.8.0
and 6.9.0
.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-08-26: Compose 1.9.0! Wear Compose RC! Compose Multiplatform beta! Kobweb! Modifier order! String and icon wrappers! And... why is it tough to remember when and how to remember()?!?
- 2025-08-10: produceState() problems! RetainedEffect()! Compose Unstyled! And... I'm going to be AFTNK (away from this newsletter's keyboard) for a bit!
- 2025-08-05: Compose and Wear Compose RCs! Compose Multiplatform previews! Keyboard shortcuts! Animated text diffs! And... why do we key()?!?