jetc.dev Newsletter Issue #219
Published: 2024-06-18
We got a fresh BOM, some updated betas, and a stable Glance, so we check those out! We also review a bunch of Google posts, designing composable APIs for flexibility, and a tooltip/onboarding library.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
Compose BOM is up to 2024.06.00
. This packages up Compose 1.6.8
and Compose Material3
1.2.1
, the latter being the same as before. As one might expect, this includes minor bug fixes.
Compose also has a 1.7.0-beta03
release. This contains bug fixes and a few optimizations,
but not much of either. My guess is that we’ll get an RC next and a stable release before
the end of August.
Compose Material3 is out with a 1.3.0-beta03
release. It moves DropdownMenu
to be
available from the common source set.
Wear Compose is up to 1.4.0-beta03
, with bug fixes and performance improvements. This
too might get a stable release before the end of August.
Glance now has a 1.1.0
stable release! There were no changes from the RC release.
And, in Compose-related libraries, we have:
androidx.camera:camera-viewfinder-compose:1.0.0-alpha02
androidx.fragment:fragment-compose:1.8.0
androidx.lifecycle:lifecycle-runtime-compose:2.8.2
androidx.lifecycle:lifecycle-runtime-compose-android:2.8.2
androidx.lifecycle:lifecycle-runtime-compose-desktop:2.8.2
androidx.lifecycle:lifecycle-viewmodel-compose:2.8.2
androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.2
androidx.lifecycle:lifecycle-viewmodel-compose-desktop:2.8.2
androidx.navigation:navigation-compose:2.8.0-beta03
androidx.navigation:navigation-fragment-compose:2.8.0-beta03
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Do I Package Desktop and Web CMP Apps?
JetBrains has some documentation on packaging Compose Multiplatform apps, but it is in a somewhat unusual location. Learn more about the process in this week’s highlighted Stack Overflow question.
Why Can’t Typesafe Nav Support Nullable Int
Parameters?
We cannot use Int?
in the typesafe Navigation for Compose system. For that matter,
we cannot use any of the nullable primitive types. Learn why in this week’s highlighted
Kotlinlang #compose
Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Medium: Building Jetcaster on all Form Factors
Google’s Chris Arriola, Chiara Chiappini, and Chiko Shimizu co-wrote an article explaining how Google extended the Jetcaster sample app to support TV Compose, Wear Compose, and Glance as well as traditional mobile devices. They created dedicated app modules for mobile, TV, and Wear OS, with shared library modules for data access, domain models/use cases, and their design system.
Top 3 Updates with Compose across Form Factors at Google I/O ‘24
Google’s Chris Arriola also reviews some of the major Compose announcements from last month’s Google I|O 2024 conference, including updates to Compose itself, better support for screens both large (tablet, TV) and small (Wear OS), and Glance 1.1. This material is also available as a YouTube video.
Developers for adidas CONFIRMED build features 30% faster using Jetpack Compose
Google’s Nick Butcher brings us a marketing piece explaining how adidas leveraged Compose UI for their CONFIRMED app. This material is also available in a YouTube video.
Max implemented UI changes 30% faster using Jetpack Compose
Google’s Tomáš Mlynarič explains how Warner Bros. Discovery leveraged Compose UI for their Max streaming platform’s app.
Medium: Creating flexible components in Compose
Volodymyr Nevmerzhytskyi writes about techniques for making your composables more adaptable to future changes coming from your designers. It focuses on slot-based APIs to give yourself greater flexibility for what goes in those various slots.
Medium: Requesting the Current Location of iOS device from Kotlin using Compose Multiplatform
Ngenge Senior demonstrates how to wrap iOS’ CoreLocation APIs in Kotlin using Kotlin Multiplatform, then consume that location in a Compose Multiplatform UI.
Medium: Jetpack Compose Navigation: Embracing Type Safety and Simplifying Parcelable Handling with NavHelper library
Ioannis Anifantakis wrote a library
to help simplify the use of the type-safe edition of Navigation for Compose, especially when
it comes to passing Parcelable
objects and working with strings that might contain special
characters (e.g., URLs). In this post, Ioannis walks us through what the library does for
you and the overall benefits of the type-safe navigation API.
Other Interesting Links
- An Amazing Login Screen in Jetpack Compose | Kotlin | Exoplayer
- Android Jetpack Compose – Swipe-to-Dismiss with Material 3
- Jetpack Compose Navigation: Secure Data Transfer and Screen-to-Screen Transitions
- Medium: Adaptive Layouts with Jetpack Compose
- Medium: Building a Cross-Platform Invoice Generator with Compose Multiplatform & Kotlin Multiplatform
- Medium: Compose Multiplatform Library as a Swift Package Manager in iOS
- Medium: Deep Dive into Integrating Jetpack Compose into an Existing Codebase
- Medium: Getting started with Kotlin Wasm
- Medium: How to Create a Cute 3D Radio Button in Jetpack Compose
- Medium: How to Integrate Google Fonts into Material3 Jetpack Compose Android Apps
- Medium: How to play videos in Compose Web?
- Medium: Jetpack Compose: Easiest way to display Gifs from local “res” folder
- Medium: Overflow Indicator In Jetpack Compose
- Medium: Plug the Leak: Mastering Jetpack Compose Memory!
- Medium: Shared Element Transitions in Jetpack Compose
- Medium: Simplifying Multi-Selection in Jetpack Compose
- Medium: Understanding
TextField
andBasicTextField
in Jetpack Compose - Medium: Understanding Side Effects in Jetpack Compose
- Medium: Why we adopted declarative UIs at Prezzee Mobile
- Performance Optimization of LazyColumn in Jetpack Compose
- RecyclerView vs LazyColumn
- Video: Hacking Sony Cameras with Kotlin
Resource Roundup
100% pure code!
GitHub: F4bioo / Tourtip
Fabio Marinho brings us a library that builds a series of tooltips to serve as a guided tour of a screen, where the user can move forwards and backwards through the tooltips to see the various options.
Notable Releases
Horologist — the Wear Compose counterpart to Accompanist — is
up to 0.6.14
, with updated
dependencies, better responsive layout support, and more.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2024-12-10: A Compose Multiplatform alpha! Hot reload! Presentation! Sprites! Calendars!
- 2024-12-03: Rebecca Franks on clipping and masking! Stefano Natali on graphicsLayer()! FunkyMuse on type-safe nav results! And... if we have enough maps, do we need to store our maps in a Map?!?
- 2024-11-26: Math! Shared element transitions! Custom modifiers! Macrobenchmark! Adapting to platform-specific design systems! And... why does wrapContentSize() not wrap my content size?!?