jetc.dev Newsletter Issue #273

Published: 2025-07-15

This week, we look at inscrutable Lint warnings, plus a batch of Android Makers presentations. We look at not only focus, but also focus. And we see a Gradle plugin to wrap our Compose for Web app in a PWA.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

Last week, we got some new Compose-adjacent alphas:

  • androidx.hilt:hilt-navigation-compose:1.3.0-alpha02
  • androidx.paging:paging-compose:3.4.0-alpha01
  • androidx.paging:paging-compose-android:3.4.0-alpha01

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

How Can I Determine the Size and Position of Descendants of Peers?

The onGloballyPositioned() modifier is the “go-to” solution for learning about the size and position of composables, and you can use this to have Composable A react to the size and position of Composable B, even when one is not the child of the other. This leads to tight coupling between those composables, however. See another variation on the onGloballyPositioned() approach, leveraging a composition local for less coupling, in this week’s highlighted Stack Overflow question.

Why Is My IDE Complaining About My BoxWithConstraints()?

BoxWithConstraints() is great, but sometimes it is overkill, especially if you are not fully leveraging its scope. There is a Lint warning for this, and we explore an example of how to avoid BoxWithConstraints() (and the Lint warning) in this week’s highlighted Kotlinlang #compose Slack thread.

Android Makers 2025

The Android Makers team has been slowly rolling out the videos from their 2025 conference. Here is the current lineup of Compose-related talks!

Composable Commentary

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

It’s All About (Accessibility) Focus And Compose

Eevis Panula (Mastodon, Bluesky) points out a common spot of confusion around focus: keyboard focus and accessibility focus are independent concepts, and Compose tends to make both of them a bit confusing. Eevis explores what should be focusable, how to control what UI element is keyboard-focused and/or accessibility-focused, and changing the traversal order of both types of focus. No wonder focus seems to be perpetually… out of focus!

Medium: Discovering Material 3 Expressive — FAB Menu

Material3 Expressive adds in FloatingActionButtonMenu() composable, implementing the classic floating action menu extension to the FAB concept. Renaud Mathieu (Bluesky) explores the concept, from its history as a UX element to the Material3 Expressive implementation.

Nested Scrolling in Jetpack Compose

Nested scrolling was a serious pain in the classic View system for a long time. Fortunately, Compose dealt with it early, as Victor Brandalise explains. Victor examines what needs custom nested scrolling help and the pieces necessary to implement it.

Resource Roundup

100% pure code!

GitHub: DevAtrii / ComposeWebKit

GitHub user DevAtrii is building a Compose for Android wrapper around WebView, including support for multiple WebView instances, pull-to-refresh support, back nav management, etc.

GitHub: yuyuyuyuyu-dev / ComposePWA

GitHub user yuyuyuyuyu-dev has published a Gradle plugin that wraps your Compose for Web app into a progressive web app (PWA) via a Gradle task.

GitHub: elyesmansour / compose-floating-tab-bar

Elyes Mansour (Mastodon, Bluesky) brings us a Liquid Glass-style floating tab bar, complete with optional accessory composables, customizable transitions, and more.

Notable Releases

Compose Unstyled is up to 1.37.0, adding ThemeOverride(), along with a textColor parameter for TextField().