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!
- Building a Modern Kotlin Multiplatform Application with Compose Multiplatform and Koin
- Building dynamic forms with JSONForms and Kotlin Multiplatform
- Compose Hot Reload 🔥 is here, stop relaunching your app!
- Kotlin and Compose Multiplatform patterns for iOS interop
- Skipping Compose performance problems in one commit
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.
Other Interesting Links
- Compose Multiplatform with Decompose
- Medium: Building a Dynamic Curve Spinner in Jetpack Compose
- Medium: Creating a Custom Theme Change Switch In Jetpack Compose
- Medium: Mastering Recomposition in Jetpack Compose: 5 Scenarios & 3 Pro Tips
- Medium: Migrating to Jetpack Compose: Real-World Lessons from the Trenches
- Medium: Showing dialogs, snackbars and toasts: how to handle user feedbacks with Compose
- Medium: Why Your Compose App Feels Cheap (5 Quick Fixes)
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.
Other Interesting Links
- GitHub: swapnil-musale / KDeviceInfo (platform-specific details for Compose Multiplatform)
- GitHub: tahaak67 / ShowcaseLayoutCompose (onboarding/help highlights for Compose Multiplatform)
- GitHub: TeddKo / BalloonText (chat-style text bubbles)
Notable Releases
Compose Unstyled is up to 1.37.0
,
adding ThemeOverride()
, along with a textColor
parameter for TextField()
.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-07-01: Nav3! Autofill! Server-side rendering! And... Compose alpha BOM, where were you?!?
- 2025-06-24: Compose production and beta releases! Compose Multiplatform patch! TextFieldState! Nav3! Androidify! Rive! And... can we go edge-to-edge on iOS?!?
- 2025-06-17: Compose Multiplatform! Server-defined UI! OpenGL in Compose Multiplatform! Collecting signatures! And... can we start off with a bit of focus?!?