jetc.dev Newsletter Issue #307
Published: 2026-03-24
This week, we look at a Compose Multiplatform patch release and wonder if we can get more SEO in our Compose for Web apps. We boost startup performance and try to choose a way to draw a glowing border. And we peek excitedly at a hot… swan? 🦢
(AFAIK, no actual swans were heated as part of that project)
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
JetBrains released Compose Multiplatform 1.10.3,
with bug fixes both in Compose Multiplatform itself and from the upstream Compose release.
In addition, Jetpack Media3 got a 1.9.3 patch release and a 1.10.0-rc02 release, including
for the Compose-related libraries:
androidx.media3:media3-ui-compose:1.10.0-rc02androidx.media3:media3-ui-compose:1.9.3androidx.media3:media3-ui-compose-material3:1.10.0-rc02androidx.media3:media3-ui-compose-material3:1.9.3
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
Why Is My DropdownMenu() Off on Android 16?
There may be a bug in the DropdownMenu() implementation that has the menu Window appear in
the wrong spot on landscape. This may be tied to camera cutouts being ignored. Learn more in
this week’s highlighted Stack Overflow question.
Where Is My SEO for Compose for Web?
Compose for Web (JS or Wasm) is designed for creating apps more so than sites. If you are thinking
about SEO, probably that work should be directed towards the site that markets the app. If you
really want SEO on the Web app itself… you might wish to consider other Compose-related
Web frameworks, as we see in this week’s highlighted Kotlinlang compose-web Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Medium: How Many Ways Do You Know to Draw a Glowing Border in Jetpack Compose?
Yuriy Skul’s question from the post title might result in an answer of “none!” from many of you. Even if you know a way to do it… Yuriy’s post shows six different approaches with varying performance, pros, and cons.
Medium: How I Found a 34% Startup Win in a Modern Compose App
James Cullimore writes about analyzing a Compose for Android app and various techniques for identifying
sources of startup slowdowns. Baseline profiles are part of the solution at best; it turned out
that the venerable StrictMode helped more.
Substack: RememberObserver : The Compose API You Probably Aren’t Using
Yves Kalume
(Mastodon)
points out the RememberObserver interface, used by DisposableEffect() and
other composables for finding out about the lifecycle of remember(). Override onRemembered(),
onForgotten(), and onAbandoned() to react to lifecycle changes.
Jetpack Compose Layouts: When to Use Row, Column, Box & ConstraintLayout
Newcomers to Compose, especially coming from classic Android development, may be confused as to
which containers to use when. Sagar Maiyad explains when one should use ConstraintLayout() and
when the box model (Box(), Row(), Column()) will suffice.
Other Interesting Links
- Jetpack Compose Performance: Optimization Techniques for Smooth Android Apps
- Jetpack Compose Testing: Complete Guide to UI Testing in Modern Android
- Medium: Apple’s Way: Bidirectional SwiftUI — Compose Interactions
- Medium: Better Loading States in Jetpack Compose
- Medium: Building a Comma-Separated Decimal Input in Jetpack Compose
- Medium: Claim Before You Reveal: Engineering a Flip-to-Win Experience in Jetpack Compose
- Medium: CompositionLocal in Jetpack Compose
- Medium: Jetpack compose: Custom System Wide Keyboard
- Medium: PercentagesWithAnimationCompose — An Animated Percentage Indicators Library for Jetpack Compose
- Medium: Remote Compose: The Future of Dynamic Android UIs (And How It Compares to SDUI)
- Medium: Smooth Keyboard Animation with BottomSheetDialog + Jetpack Compose
- Medium: The Case of the Vanishing Text: Why Your Jetpack Compose UI is Gaslighting You
- Medium: The Easiest & Cleanest Android Navigation Drawer Ever (Architecture-Proof!)
- Medium: The Green Flag of Compose — State hoisting
Resource Roundup
100% pure code!
Compose Hot Swan
The omnipresent Jaewoong Eum (Mastodon, Bluesky) published the first edition of an implementation of Compose Hot Reload targeting Android devices. It will detect code changes, send them over to the target device, hot-swap changed classes while retaining state, and even take a screenshot for you.
GitHub: aldefy / compose-shelf
Adit Lal
(Mastodon, Bluesky)
was unhappy about the fact that Material3’s side sheet made it to the legacy View system and
not Compose… so he crafted one for most Compose Multiplatform targets. It includes ModalSideSheet(),
AdaptiveSheet(), and StandardSideSheet() composables for our use. It is unclear whether there
is an elf on this shelf, though.
GitHub: aldefy / compose-pinch-grid
Adit Lal (Mastodon, Bluesky) has been busy, also bringing us a pinch-to-resize grid implementation for most Compose Multiplatform targets. You use gestures to change the column count in the grid, with suitable animations and haptics.
GitHub: Cerrativan / ComposeBook
Ivan Di Sante created a Storybook-style live component catalog for Compose for Android, powered
by KSP and a Gradle plugin. Annotate relevant composables with @Page, then use the composeBook
Gradle task to build the catalog.
Other Interesting Links
- GitHub: ClankerGuru / gort (brutalist design system for Compose Multiplatform)
- GitHub: HDCharts / charts (pie/line/stacked/bar/radar charts for Compose Multiplatform)
- GitHub: kttipay / KPayment (Google Pay/Apple Pay for Compose for Android/iOS/Web)
- GitHub: notoriouscorgi / ComposeTestTools (test utilities for Compose Multiplatform)
- GitHub: PatilParas05 / RecompositionGuard (real-time recomposition alerts for Compose for Android)
Notable Releases
Maps for Compose is up to 8.2.2,
containing a bug fix.
A Very Particular Set of Skills
Adding Compose capabilities to your coding agents!
Developing skills is both an art and a science.
On the science side, most skills and associated references should be fairly short. Whatever is in one of these files chews up context window space and costs tokens as it gets loaded. I recommend aiming to create focused, fine-grained references, with thin skills pointing to them. Let the agent load what it needs in bite-sized pieces.
On the art side… having opinions is great, especially for skills that you use internally. Having opinions in published skills makes it even more important that those skills be focused, because users may not agree with your opinions.
And, with that as preamble, here are this week’s new Compose-related skills:
- GitHub: Drjacky / claude-android-ninja
- GitHub: felipechaux / kmp-compose-multiplatform-skill
- GitHub: firdaus1453 / kmp-skill
…And One More Thing
Over on my blog, I wrote about security risks with the use of coding agents.
Recent Issues:
- 2026-03-10: Compose Multiplatform patch! FlexBox! CameraX! Permissions! ContentScale! Testing recomposition counts! NFC!
- 2026-03-03: Compose updates! Compose Multiplatform alpha! Compose styles API! LaTeX rendering! And... a linked list, for realz?!?
- 2026-02-24: Reducing development friction! Line graphs! CMP IDE plugin! Syntax highlighting! And... can we *finally* get rid of ViewModel?!?