jetc.dev Newsletter Issue #314

Published: 2026-05-12

New BOMs are out, and we have other updates as well to check out!

Beyond that, we look at form validation and tracing through ViewModel construction. Plus, we see multiplatform stylus support and some scrolling support libraries.

NOTE: I will be taking a short break, so see you in two weeks!

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

The Compose 2026.05.00 BOM editions are out. The stable BOM should point to 1.11.1, containing bug fixes.

The alpha BOM should point to 1.12.0-alpha02. Of note:

  • There is a new SideEffect() overload that accepts keys, for improved one-shot side-effects

  • There is a new meshGradient() modifier

Compose Material3 now has a 1.5.0-alpha19 release. Typography now offers support for a default font family. In addition, a bunch of APIs were promoted out of experimental status, and there were some bug fixes.

Compose Material3 Adaptive is out with 1.3.0-beta01, with no changes, other than devolving the “scaffold order APIs” back to experimental status.

Remote Compose is up to 1.0.0-alpha010. Of particular note, Remote Compose is now testable, via a new androidx.compose.remote:remote-testing library.

Glance for Wear is up to 1.0.0-alpha09, which now has its own ExperimentalGlanceWearApi annotation. Also, Glance for Wear probably is gaining better IDE support, courtesy of a new androidx.glance.wear:wear-tooling-preview library.

TV Compose has new stable releases:

  • androidx.tv:tv-foundation:1.0.0
  • androidx.tv:tv-material:1.1.0

Wear Compose is up to 1.7.0-alpha02, with some bug fixes.

And we also got these other Compose-related updates:

  • androidx.camera:camera-compose:1.6.1
  • androidx.camera.viewfinder:viewfinder-compose:1.6.1
  • androidx.navigation:navigation-compose:2.10.0-alpha04 (and multiplatform targets)
  • androidx.navigation:navigation-fragment-compose:2.10.0-alpha04
  • androidx.navigationevent:navigationevent-compose:1.1.1 (and multiplatform targets)
  • androidx.paging:paging-compose:3.5.0 (and multiplatform targets)
  • androidx.savedstate:savedstate-compose:1.5.0-rc01 (and multiplatform targets)

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

How Can We Scroll To an Item In a LazyColumn() From Outside the Composable?

In the end, the author had the right idea. The crash in the original implementation stemmed from GlobalScope, which is rarely the right answer in production code. Learn more in this week’s highlighted Stack Overflow question.

How Can We Get the Coordinates of Indirect Children in a Single Layout Pass?

onGloballyPositioned() is (relatively) easy, but it can trigger a second layout pass, depending on how you use that position. Avoiding that extraneous layout pass may be possible with some additional work, as we see in this week’s highlighted Kotlinlang #compose Slack thread.

Composable Commentary

Posts, videos, and other new information related to Jetpack Compose!

Medium: A Validation Architecture for Forms in Jetpack Compose

Melek Sönmez Cesur gives us a tour of an approach for forms management in Compose, allowing forms to validate across all input values while minimizing the ceremony for declaring what composables supply those input values.

Medium: ViewModels in Jetpack Compose: A Deep Dive into the Internals

Medium user Avinash walks us through the innocent-looking viewModel() function, explaining how it finds the appropriate ViewModelStoreOwner for your composition, how NavController affects that, and how this all ties back to onRetainNonConfigurationInstance() (from a bygone era of Android app development).

Video: Mastering Recomposition: Optimizing State Changes for Efficient UI

Marcin Moskala delivered a presentation at Android Makers 2026, walking through the process of recomposition and how to tune your state updates to trigger recomposition at all the right times… and none of the wrong ones.

Tuning Compose Themes Live: A Visual Feedback Loop for UI Design

Jaewoong Eum (Mastodon, Bluesky) writes about how you can use Compose HotSwan to make it easier to evaluate themes on the fly, without rebuilds, especially coming from coding agents. See also this post on using Compose HotSwan to hot-reload side effects.

Resource Roundup

100% pure code!

GitHub: MohamedRejeb/compose-stylus

Mohamed Rejeb created a penInput() modifier and a PenInkSurface() composable for cross-platform stylus support on Compose Multiplatform for all major platforms.

GitHub: yshrsmz/changelog-compose

Yasuhiro SHIMIZU (Bluesky) brings us a ChangelogContent() composable that renders the content in an XML-described changelog. This presently supports Compose for Android.

GitHub: AbhijithShambu/compose-scrollbar-modifier

Abhijith Shambu offers a flexible scrollbar implementation for Compose for Android, iOS, and desktop. It offers support for horizontal and vertical scrollbars, auto-hide, and customizable scrollbar look-and-feel.

GitHub: farsroidx/ComposeElasticOverscroll

Mohammad ali Riazati created a modifier-based elastic overscroll implementation for Compose for Android. It avoids recompositions during scrolling and gives you an exponential resistance model for physical spring-like feeling.

A Very Particular Set of Skills

Adding Compose capabilities to your coding agents!

WooSeung Kim created FixThis, a tool to help you explain to a coding agent a particular portion of your Compose UI that needs adjustments. You point out on the screen where the issue lies, and FixThis prepares a prompt for you telling the agent where that is.

In addition, these skill files showed up this week:

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

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!