jetc.dev Newsletter Issue #311
Published: 2026-04-21
This week, we look at viewmodel scope, more inclusive drag-and-drop options, and shared element transitions in Nav3. We see some official skills and an emoji picker. And, we hear from Jaewoong Eum, Jaewoong Eum, Jaewoong Eum, and Jaewoong Eum.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Medium: Scope of ViewModels in Compose Navigation 3
Domen Lanišnik
(Bluesky)
points out that while ViewModel was scoped to be per navigation destination in Nav2, that is opt-in behavior for Nav3 — by default, all destinations share a single ViewModel.
Compose Preview Driven Development with Instant Feedback
Jaewoong Eum
(Mastodon, Bluesky)
writes about the power of having a robust catalog of @Preview functions and how they can be used for more than just “eyeballing” what your composables render as.
Optimize App Performance by Mastering Stability in Jetpack Compose
The previously-mentioned Jaewoong Eum (Mastodon, Bluesky) gives us a fresh review of the state of stability in Compose: what it is, where we still need marker annotations, how to analyze our current stability status, and more!
Compose Preview Renders Differently Than Your Real Device. Here’s Why.
Jaewoong Eum,
(Mastodon, Bluesky)
who appears to have taken over this newsletter 😀, writes about the differences between the rendering of a composable in a @Preview function versus when it runs “for realz”, owing to platform differences. The post also explains how Compose HotSwan can help you avoid that discrepancy by showing previews on a device.
Medium: Bridging the Gap: Automating Your Jetpack Compose Component Catalog
Continuing the theme of previews, Maik Peschutter reviews ComposeComponentCatalog, an option for providing an in-app way of letting graphic designers and others view the full roster of previews.
Inclusive Android Apps #5: The Problem of Drag and Drop
Eevis Panula (Mastodon, Bluesky) points out that drag-and-drop is awesome but may be difficult for all of your users to accomplish, especially if they are using screen readers. Eevis also demonstrates ways to improve the reordering experience, including leveraging semantics to help assistive technologies.
Smooth Handoff
KMP Bits writes about LocalNavAnimatedContentScope, a way of implementing shared element transitions between Nav3 destinations.
Other Interesting Links
- At the Mountains of Madness: Rewriting a 100-Line PowerShell Script as a KMP Desktop App
- Made in Compose: Airbnb Month Picker Dial
- Medium: Android 17 Adaptive UI — A Practical, Scalable Approach (Compose + XML)
- Medium: Building a Scratch Card in Jetpack Compose
- Medium: From Android-Only to Multiplatform: When One Library Had to Serve Two Very Different Products
- Medium: How I Added Sticky Headers to LazyColumn in Jetpack Compose
- Medium: How to Implement Shaders in Compose Multiplatform (Android, iOS, Desktop & Web)
- Medium: Navigation Drawer APIs in Material 3 Jetpack Compose
- Medium: Navigation in Android Jetpack Compose: A Practical Guide
- Medium: Rethinking UI Updates in Jetpack Compose with Remote Configuration
- Medium: Scaling Jetpack Compose: 3 Non-Negotiable Rules for Enterprise UIs
- Medium: Stop Using “View More” in Jetpack Compose—Try This Modern Fade Text UX
- Medium: The Easiest MVI Search Pattern for Android (That You Can Copy in 5 Minutes)
Resource Roundup
100% pure code!
GitHub: android / skills
Google released a set of coding agent skills of relevance to Android developers. Besides the skill files themselves, these are minimally documented, but see this for what there is.
GitHub: skydoves / android-skills-mcp
Jaewoong Eum, (Mastodon, Bluesky) in an effort to once again claim this newsletter on behalf of hot swans everywhere, turned around and wrapped Google’s skills in an MCP server (to reduce the cost of preloading skills). This repo also offers a CLI for converting skills into native rules files for various coding agents.
GitHub: ignaciotcrespo / compose-preview-cli
Ignacio Tomas Crespo created a TUI (terminal UI) for browsing @Preview functions in your project and launching them on a connected device.
GitHub: digitalby / kmp-emoji-picker
Yury Vashchylau
(Bluesky)
brings us an emoji picker (EmojiPicker()) implementation for Compose Multiplatform, supporting most major platforms.
Other Interesting Links
- GitHub: AraujoJordan / Reflow (Multiplatform: data fetching with retry logic and composable state integration)
- GitHub: asleep-ai / compose-wheelpicker (Android: wheel and time pickers)
- GitHub: M1n9yu23 / ChromaFlow (Android: animated neon glows along lines)
- GitHub: mamon-aburawi / FileMapper-KMP (Multiplatform: map XSLX/JSON data, with composable support)
- GitHub: MingYubmy / capsule-compose-multiplatform (Multiplatform: G2 continuous rounded rectangles)
- GitHub: nuralfianrbj / zoomableimage (Android: zoom/pan support for Coil)
- GitHub: RikoAppDev / compose-design-exporter (Gradle plugin to export previews to static documentation pages)
- GitHub: sceneview / sceneview (Multiplatform: 3D/AR rendering)
- GitHub: techie-labs / volta (Multiplatform: battery metrics with composable state support)
- GitHub: theadityatiwari / RevealSlider (Android: image comparison slider)
- JetStart (hot reload to phone/emulator/browser)
A Very Particular Set of Skills
Adding Compose capabilities to your coding agents!
Besides Google’s set of Android skills mentioned above, here are a few more that popped up:
Recent Issues:
- 2026-04-14: 1.11.0 RC and beta releases! App languages! Atomic design! Action modes! And... *another* newsletter?!?
- 2026-04-07: Design system rules! Cross-platform haptics! Cross-platform biometrics! Editors! More editors! And... yet more editors?!?
- 2026-03-31: Compose Multiplatform beta! Back handling! Flexbox! Rich text input! Composition tracing! And... text input? That's rich!