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.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.

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.