jetc.dev Newsletter Issue #290

Published: 2025-11-18

This week’s short-and-sweet issue looks at blocking clicks on transparent pixels, text input, and mixing Espresso and Compose tests. We also see a circular time range picker and a FAB that jiggles “like a bowlful of jelly”.

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

How Can I Restrict Clicks To Be On Non-Transparent Pixels?

Making an Image() respond to clicks via clickable() or combinedClickable() is easy enough. If the image is non-rectangular, though, there will be a bunch of transparent pixels that by default would also be clickable. If for some reason that is not what you want, you will have some work to do, as we see in this week’s highlighted Stack Overflow question.

Why Do My iOS Compose UI Tests Run Without a Simulator?

It turns out that non-Android tests in a ui-test Compose Multiplatform module run in a “mock platform” based on pure JVM. A lot of the time, this is fine, but it causes problems if you are trying to address a bug that only shows up in iOS proper. Learn more in this week’s highlighted Kotlinlang #compose Slack thread.

Composable Commentary

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

Video: Mastering Text Input in Compose

Google’s Meghan Mehta delivered a droidcon London 2025 presentation, looking at the recent move to the state-based BasicTextField() implementation, connecting to the LocalAutofillManager, adding semantics for accessibility, and more.

Video: Build a modern and expressive Wear OS app

Google’s Chiara Chiappini had a droidcon London 2025 presentation looking at Wear OS and the recent release of Compose Material3 Expressive for it. Chiara walks us through shape morphing, the use of TransformingLazyColumn(), EdgeButton(), and more.

Medium: Testing Android Apps During the Compose Migration: A Practical Guide to Mixing Espresso and Compose Test

Jerimiah Ham explores the difficulties in testing apps that employ a mix of composables and classic Views and explains how createAndroidComposeRule() will let you blend Espresso tests with Compose tests. Jerimiah looks at hybrid page objects, how to deal with synchronization across two disparate test systems, and more.

Video: White-Labelling Your Compose and XML UI with Design Tokens

Joshua Hughes delivered a droidcon London 2025 presentation exploring how to implement a white-labelling system in a Compose app, so you can have multiple branded apps coming from a single set of code.

Video: Beyond the UI: Compose as a Foundation for Multiplatform Apps

Ash Davies (Mastodon) walks us through how to use Compose to manage all sorts of node trees, not just UI elements, through frameworks like Molecule and Circuit.

Resource Roundup

100% pure code!

GitHub: iprashantpanwar / JellyFab

Prashant Panwar (Bluesky) brings us a floating action button and menu implementation for Compose for Android, with “smooth, flexible, and delightful jelly-like expansion animation based on real spring dynamics”.

GitHub: yamin8000 / TimeRangePicker

Yamin Siahmargooei offers us a circular picker to choose a time range within a day, for Compose for Android.

GitHub: quantipixels / ikokuko

GitHub user quantipixels has released a form validation library for Compose Multiplatform. It includes a large library of validators, a framework for creating validation-aware widgets, and a declarative way to build up a form and its validation rules.

Combot

Gabriel Brasileiro created a library for testing composables in Compose for Android projects.

Notable Releases

Google released Maps for Compose 6.12.2, fixing a bug where they were doing some initialization work on the main application thread.

Compose Unstyled 1.49.0 is out. Notably, this adds Platform Themes, which “provide a native look and feel depending on the platform you are running on, such as platform fonts, text sizes, emojis on Web, touch indications, and interactive sizing for controls”.