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-rc02
  • androidx.media3:media3-ui-compose:1.9.3
  • androidx.media3:media3-ui-compose-material3:1.10.0-rc02
  • androidx.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.

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.

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:

…And One More Thing

Over on my blog, I wrote about security risks with the use of coding agents.

Featured here? Please add this badge to your article or repo! As Seen In - jetc.dev Newsletter Issue #307

Powered by Buttondown

Or, you can subscribe to the Atom feed or follow Mark Murphy on Mastodon or Bluesky.

Spread the Word!
Suggestions?
If you have ideas for items for future newsletter editions, reach out via email or contact Mark Murphy on kotlinlang Slack!