jetc.dev Newsletter Issue #300
Published: 2026-02-03
It’s the tri-centennial issue of the newsletter! 🎉 As always, I am grateful for everyone who has subscribed, reads the newsletter through the Atom feed, or picks it up via my Mastodon or Bluesky posts.
This week, we look at a lot of bug fixes, closely examine onGloballyPositioned(), chat
a bit about accessibility, and reduce the size of our Android apps.
And we see a library that helps us with large fonts, allowing us to download slices at a time.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
The Compose BOMs are up to 2026.01.01. The production BOM should point to 1.10.2 of the
core artifacts, and that patch release contains small bug fixes.
The alpha BOM should point to 1.11.0-alpha04 of the core artifacts. Here, we get:
- A non-lazy
Grid(), filling a long-standing gap in the foundation composables - A
FlexBox(), described as “a superset ofRow,Column,FlowRow, andFlowColumn” - More bug fixes
Compose Material3 is up to 1.5.0-alpha13, also mostly for bug fixes.
Compose Material3 Adaptive is out with 1.3.0-alpha07, once again mostly for bug fixes.
Remote Compose is now up to 1.0.0-alpha03,
adding support for shapes and colors in BorderModifier, introduced the concept of RemoteDensity,
and added a CombinedAction to support more than one action on a click event.
Compose for Wear OS reached 1.6.0-alpha09. While this is mostly bug fixes, they renamed
SnapPositionalThreshold and SnapSensitivity to LowSnapPositionalThreshold and
LowSnapSensitivity.
Glance for Wear OS is at 1.0.0-alpha02, also mostly bug fixes.
We received updates to many Compose-related artifacts, including:
androidx.activity:activity-compose:1.12.3androidx.camera:camera-compose:1.5.3androidx.camera:camera-compose:1.6.0-beta01androidx.camera.viewfinder:viewfinder-compose:1.5.3androidx.camera.viewfinder:viewfinder-compose:1.6.0-beta01androidx.navigation:navigation-compose:2.9.7(plus multiplatform targets)androidx.navigation:navigation-fragment-compose:2.9.7androidx.navigationevent:navigationevent-compose:1.0.2(plus multiplatform targets)androidx.paging:paging-compose:3.4.0(plus multiplatform targets)
And JetBrains released Compose Multiplatform 1.11.0-alpha02.
This drops Apple x86_64 support, renames WebElementView to HtmlElementView, adds a new
ComposeUIView for iOS, and adds many other improvements and bug fixes.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
How to create Dials in Jetpack Compose
sinasamaki (Mastodon, Bluesky) discusses their new ChromaDial library, for creating interactive dials in Compose. This library supports all Compose Multiplatform targets and offers a range of features, from overshot tracking, customizable step snapping behavior, rich style control, and more.
Video: Making Apps Accessible with Kotlin and Compose
Huyen Tue Dao (Mastodon, Bluesky) interviewed Vanessa Johnson at KotlinConf 2025 regarding implementing accessibility support in Compose applications.
Medium: The Untapped Power of Jetpack Compose Modifiers
Sergey Drymchenko reminds us that modifier order matters a lot. If you think of each modifier in
your modifier chain as wrapping a Box() around the next modifier’s Box() (and eventually your
content), it is easier to see where your modifier order may be going wrong.
Medium: From Pixels to Perfection: A Deep Dive into Compose’s onGloballyPositioned
Sometimes, you really need to know where your composable is being rendered on-screen. Sehaj kahlon
explores the onGloballyPositioned() modifier, walking through scenarios like parallax headers
and tooltip anchoring to show how to apply it.
Vertical text in Jetpack Compose (without rotation width problems)
Vladislav Kochetov demonstrates how to render text vertically without using the rotate()
modifier. Using rotate() simply rotates the content, not the composable size, and so only
works in certain situations. Vladislav shows how to rotate individual characters inside of a Column()
as the alternative approach.
Is Jetpack Compose Making Your APK Fatter? (And How to Fix It)
Sivavishnu R reviews how our Android app size may change based on an initial migration to Compose, and then how various optimization techniques (e.g., R8) can improve upon that.
Medium: Building an Infinite Video Feed in Jetpack Compose: A Media3 Tutorial
Oğuzhan Aslan takes a deep dive into using a VerticalPager() for a video feed, with the content
driven by the ExoPlayer-powered Media3 library.
Other Interesting Links
- Adding accurate AsyncImage previews in Coil 3 with a Compose wrapper
- Fixing Animated WebP Jitter on Android with Jetpack Compose
- Medium: Android Navigation Architecture: The Compose Way
- Medium: Bottom navigation in KMP with Compose Multiplatform
- Medium: Building a Fully Adaptive Navigation System in Compose Multiplatform (KMP)
- Medium: Dynamic Height Top App Bar in Jetpack Compose
- Medium: How I Finally Cracked the Code: Debugging Navigation in Jetpack Compose (No Fragments Required!)
- Medium: Implementing Custom ProgressBar UI with Jetpack Compose
- Medium: Master Compose Shared Element Transitions: A Smooth UI Journey
- Medium: Mastering IntrinsicSize in Jetpack Compose: A Real-World Guide
- Medium: Mastering Pagination in Jetpack Compose: Paging 3 vs snapshotFlow
- Reactive Color Schemes: Handling System Theme Changes in Kotlin Multiplatform
- Video: Building Mobile Apps at Scale with Kotlin Multiplatform
- Video: Compose Beyond the UI: Architecting Reactive State Machines
Resource Roundup
100% pure code!
GitHub: Lyxot / Klyph
Long Yixing is building an extensive library to help in dealing with the size of Chinese/Japanese/Korean fonts. Rather than package or download the entire font, Klyph uses CSS files that define font slices based on Unicode point ranges, so we can download only the subsets that we need. This library supports all Compose Multiplatform targets.
GitHub: gleb-skobinsky / ThemeAnimator
Gleb Gutnik brings us a Compose Multiplatform library (supporting all targets) that animates the transition between themes, such as between light and dark. The library includes four standard animation formats: crossfade, slide, and two types of circular reveal.
GitHub: saltpay / lemonade-design-system
The Saltpay team created a design system for Compose Multiplatform (Android, iOS, desktop), Flutter, and SwiftUI.
GitHub: yankeppey / kmp-maps-compose
Andrei Buneyeu is working on a Compose Multiplatform wrapper around Google Maps for Android and iOS.
Other Interesting Links
- GitHub: bitfield66 / FlexiGrid (datatable-style grid for Compose for Android)
- GitHub: brewkits / Grant (permission management for Compose for Android and iOS)
- GitHub: DeFerence3 / form-doctor (KSP-powered form validation for all Compose Multiplatform targets)
- GitHub: dpaltv / navi (
SwipeableNavHost()for Material3 for Compose for Android and iOS) - GitHub: rafambn / FrameBar (frame-based seekbar for all Compose Multiplatform targets)
- GitHub: StefanOltmann / gradle-msix-plugin (create MSIX install packages from Compose for Desktop projects)
Notable Releases
Maps for Compose had two releases. 8.0.0
raised the Maps version to 20.0.0, and there are breaking changes.
8.0.1 was released shortly
thereafter with a GroundOverlay bug fix.
Recent Issues:
- 2026-01-27: Security! PinnableContainer! Nested scrolling! tvOS for Compose Multiplatform! And... will the Kotlinlang Slack archive ever get updated?!?
- 2026-01-20: Compose Multiplatform 1.10! 🎉 Compose Hot Reload! Bottom nav bar accessibility! Responsive tab rows! And... a no-Chromium desktop WebView?!?
- 2026-01-13: Memory leaks! Image-loading libraries! Screenshot testing! SVGs!