jetc.dev Newsletter Issue #190
This week, we peek at the latest Compose Compiler and decide whether it makes sense
to load data from a remote source directly in a composition. We explore
(the sequel!), optimize our composables, and explore the ramifications of JetBrains’ plans
Plus, we see a library with a general-purpose implementation of something I like to do after a hard day of writing newsletter issues: collapse.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
1.5.4 is out, primarily offering support for Kotlin
Beyond that and bug fixes, the biggest thing is a new experimental option to
enable “strong skipping”, where even composables with unstable parameters can be skipped
in certain cases.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
In this case, a developer wants a row of circles to be limited by the size of
some adjacent text. There are many possible solutions, of varying complexity,
including creating a custom layout. Explore the options in this week’s highlighted
#compose Slack thread!
Posts, videos, and other new information related to Jetpack Compose!
Alejandra Stamato explores
BasicTextField2() (which, thankfully, is a temporary
had a lot of warts in its API, which
BasicTextField2() attempts to address via a dedicated
TextFieldState, a more expressive way to indicate how many lines the field can use,
Hadi Hariri announced a preview of Kotlin Multiplatform support for Fleet. However, buried in that announcement is:
the target audience for IntelliJ IDEA will primarily remain that of server-side developers targeting the JVM. While it will be possible to open, navigate, and build Kotlin Multiplatform projects in IntelliJ IDEA and Android Studio, other features such as platform-specific run configurations, Compose Multiplatform features, and many other things that facilitate multiplatform development will be supported in Fleet only.
Saurabh Arora dives into
derivedStateOf() and a particular problem you can encounter,
when the value stops changing, because it was dependent on some state object that you are
no longer using. The solution is to use a keyed form of
and this post outlines two specific approaches for doing that.
Petros Efthymiou brings us an extensive post with all the details for implementing
BiometricPrompt inside of a Compose UI project, from detecting if biometrics are available
to displaying the prompt, finding out the result, and dealing with errors.
Joe Birch is back with another Android TV post, this time exploring having a side navigation drawer, one that collapses down to icons in the closed state but expands to have captions and support selection when it is focused.
Rafsanjani Abdul-Aziz walks us through implementing a custom
composable, in this case implementing a
CircularLayout() for laying out a collection
of children in a circle with a given radius.
Other Interesting Links
- Custom Material3 Jetpack Compose Date picker
- Jetpack Compose UI Testing in Android
- Medium: Coil Compose — Loading and Caching Images in Compose
- Medium: Enhancing Accessibility in Android Compose with CollectionInfo
- Medium: Loading Local HTML files in Compose Multiplatform WebView
- Medium: Make a Ticket View with Jetpack Compose
- Medium: Shimmer effect in Jetpack Compose
- Medium: State in Widget — Jetpack Glance
- Medium: ViewPager in Android Jetpack Compose
- Medium: Window Insets In Jetpack Compose
100% pure code!
JetBrains released a Kotlin Multiplatform library for embedding Lets-Plot charts in Compose Multiplatform projects.
Other Interesting Links
- Following Arrows (Compose Multiplatform example of arrows following the finger or mouse)
- GitHub: Aghajari / LazyFlowLayout (lazy container that follow CSS FlexBox rules)
WebView for JetBrains Compose Multiplatform is up to 1.7.0, with a breaking change from Java CEF Browser to Kotlin CEF Browser for Compose Desktop.
- 2023-11-21: Compose/Material3/Wear Compose updates! remember()! Adaptive layouts! Compose Multiplatform in 2024! @firstname.lastname@example.org on BasicTextField2()! Compose Multiplatform charts! And... is TV Compose in trouble?!?
- 2023-11-14: Compose Compiler! BasicTextField2()! @email@example.com and animations! Optimization! @firstname.lastname@example.org, JetBrains, and Fleet! JetBrains and plotting! And... we collapse?!?
- 2023-11-07: Compose Multiplatform! Chips in fields! Diffing! Custom fonts in Glance app widgets! Heatmaps! PIN input! And @email@example.com is in a bit of a haze?!?