jetc.dev Newsletter Issue #258
Published: 2025-03-25
We got our first 1.8-series beta for Compose Multiplatform, so we peek at it!
In addition, we look at accessibility, hot reload, and BringIntoViewSpec. Plus, we explore
a blurhash implementation and hierarchical animations.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
JetBrains has released Compose Multiplatform 1.8.0-beta01!
Mostly, this contains bug fixes, but it also supports iOS trackpad input, improves
iOS behavior when the view controller leaves the hierarchy, and adds @Composable
to the actual implementation of WindowInsets.Companion functions.
Also, androidx.media3:media3-ui-compose is up to 1.6.0-rc02.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Can I Pop Up an Instructions Box?
You may have encounter a UI pattern for fields for creating passwords, where a box
of rules for valid passwords pops up once the field gains the focus. The best solution
is to get rid of the rules, as most password-validity rules (other than minimum length)
are no longer recommended. But, if you need to display something like this, a
properly-positioned Popup() can work, as we see in this week’s highlighted Stack
Overflow question.
How Can I Access Screen Density in a ViewModel?
The answer is “please don’t”. When multiple Compose experts steer you away from
an approach, this should be a clue that what you are doing is inadvisable. Learn more
in this week’s highlighted Kotlinlang #compose Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Medium: Composing with Accessibility in Mind: Because Every User Matters! — Part 2
Bhoomi Vaghasiya Gadhiya continues a series of posts on accessibility in Compose UI.
This time, Bhoomi explores mergeDescendants (consolidating semantic guidance for
related composables), custom actions (to eliminate redundancy), stateDescription,
and more!
Medium: Compose Hot Reload is Now Available
Suhyeon Kim walks us through the work-in-progress implementation of “hot reload” for Compose for Desktop, to speed up UI previews.
Medium: BringIntoViewSpec — introduction
Karol Ksionek points out the loss of TvLazyColumn() and TvLazyRow()
from TV Compose and explains their role in a non-touchscreen environment like a TV.
Karol then explains how BringIntoViewSpec and LocalBringIntoViewSpec can give
us similar functionality using a regular LazyColumn() or LazyRow().
Exploring Jetpack Compose: SearchBar
Joe Birch
(Mastodon)
takes a look at Compose Material3’s SearchBar() and its feature set,
including presenting suggestions, single-click clearing of the current search
text, and more.
Other Interesting Links
- Medium: Are Compose Components Betraying You? The Shocking Hack to Vanish Native Padding!
- Medium: Building Navigation from Scratch in Jetpack Compose (With Backstack Handling)
- Medium: Compose Canvas : Understanding Shapes and Animations for beginners
- Medium: Custom Modifier in Jetpack Compose
- Medium: Drawer Pushing Content
- Medium: Forcing Recomposition When Your Lambdas Stays Stuck
- Medium: Mastering Shared Element Transitions in Jetpack Compose: A Step-by-Step Guide
- Medium: Material3 Color System Basics for Android Developers
Resource Roundup
100% pure code!
GitHub: ngallazzi / KMP-Places-Autocomplete
Nicola Gallazzi built a series of auto-complete composables for collecting addresses, cities, and countries, using Google Places as the data source. This is built on Compose Multiplatform, supporting Android and iOS at present.
GitHub: brys0 / compose-blurhash
Blurhash is a way to create short strings that can be decoded into a custom image placeholder. GitHub user brys0 is working on a Compose Multiplatform renderer for such hashes, presently supporting desktop, iOS, and Web/Wasm platforms.
GitHub: pauloaapereira / AnimatedSequence
Paulo Pereira created a framework for implementing chained or hierarchical sequences of animated effects.
GitHub: zt64 / compose-pipette
GitHub user zt64 brings us a trio of Compose Multiplatform color picker widgets, in circle, square, and ring configurations.
Other Interesting Links
- GitHub: chrisr04 / ReactorCompose (MVI implementation)
- GitHub: farimarwat / PagePilot-PdfViewer (iText-based PDF rendering)
- GitHub: gsrathoreniks / Scratchify (Compose Multiplatform scratch-off UI)
- GitHub: H4kt / compose-grid (non-lazy grid)
- GitHub: kkostov / gadulka (Compose Multiplatform audio playback)
- GitHub: Swapnil-J-Patil / CustomToast (
Toast-style popups) - GitHub: vladyhon / NavParams (out-of-band parameter passing for nav)
Notable Releases
Horologist came out with 0.7.11-alpha and 0.7.12-alpha
releases in rapid succession, updating dependencies and fixing some bugs.
Similarly, Maps for Compose shipped 6.5.1 and 6.5.2
back to back, both seemingly reverting code from 6.5.0.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2025-10-21: Gap buffers! Organizing previews! Liquid Glass! Custom design systems! And lots of stuff from Jaewoong Eum!
- 2025-10-14: New Compose BOMs! New Compose Multiplatform alpha! Nav2 -> Nav3 migration! Keys and lazy containers! Coachmarks! And... do we really want our UI to glitch?!?
- 2025-10-07: Nav graph diagrams! Native code in Compose Multiplatform! Modifier.Node API! Multiplatform maps! And... how do we bust drawWithCache()?!?