jetc.dev Newsletter Issue #187
We have a new BOM and new alphas for Compose and Wear Compose, so we check them out.
We also try to infer the importance of
@Stable and look at supporting both
views and composables from a library. We explore dialog animations and Paparazzi.
And we see a pair of Kevin Zou libraries for Compose Multiplatform, including a
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
The Compose BOM is up to
2023.10.01, corresponding with the
1.5.4 patch release,
which presumably contained bug fixes.
We also got a
1.6.0-alpha08 release, with various optimizations, along with:
Wear Compose now has a
1.2.1 patch release with bug fixes. It also has a
1.3.0-alpha08 release with better control over
And, in Compose-adjacent libraries, we have
1.1.0-rc01 for the Hilt Compose Navigation
the Lifecycle integration with Compose, notably
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
The original vision of Compose was that stability — correctly determining what has not changed —
would be inferred by the compiler without much help. Some developers more aggressively
@Immutable to help out the compiler. However, before long,
strong skipping mode
may reduce the need for such manual interventions, as we see in this week’s
#compose Slack thread.
Posts, videos, and other new information related to Jetpack Compose!
Google’s Chris Arriola reviews different approaches for supporting both
composables, with an eye towards library publishers. Chris specifically looks at
how your composable API might influence the implementation (even if that implementation
View), the stateful-vs.-stateless decision, and how to cleanly support
Medium: Unlock Interactive Possibilities with SwipeBox: A Compose Multiplatform Library for Swipe-to-Action Widget
Kevin Zou writes about compose-swipebox-multiplatform, Kevin’s Compose Multiplatform library for supporting horizontal swipes exposing actions that users can take.
sinasamaki reviews how to wrap
Dialog() in a
CustomDialog() composable, then progressively
replace default behaviors with custom ones. In particular, this post explores custom
animations, such as for when the dialog is dismissed().
Ivan Dimitrov examines using Paparazzi for screenshot testing, both of composables and
Views. Ivan also looks at overcoming certain challenges when using Paparazzi,
such as dealing with locale differences between developer machines.
Damian Petla looks at currency fields in Compose UI, where there are limits on what
is input (digits only) and where the visual result needs to be formatted as a currency. Damian
demonstrates how a custom
VisualTransformation, along with filtering logic in
TextField(), can deliver the desired results.
Chirag T walks us through using
to request one or several permissions from our composables.
Other Interesting Links
- Building a Speedometer with Compose Canvas API
- Medium: CatGPT - or How to Position Elements on Overlays
- Medium: Creating a Smooth Fade Transition for Compose Pager Indicators
- Medium: Creating an Animated Border Composable in Jetpack Compose
- Medium: Creating Expandable Sections with Compose
- Medium: Creating Image Zoom In and Out in Jetpack Compose
- Medium: Dynamic Font Sizes With Jetpack Compose
- Medium: Jetpack Compose for Beginners
- Medium: Jetpack Compose | Dependency injection with Koin!
- Medium: Jetpack Compose — Let’s Make An Application
- Medium: Jetpack Compose: State Management
- Medium: Paging 3 Library with Jetpack Compose List and Coil Library in Android
- Medium: Picture-Perfect Code: Exploring Camera & Gallery Features in Jetpack Compose
- Medium: Putting ComposeViewModel into Action: An Example with TextEntry
- Medium: Taking pictures using Jetpack Compose
- Medium: The most important and common use of Live Templates for Jetpack Compose in Android
- Video: Jetpack Compose for Maps
- Video: Setting Sail with Compose Multiplatform
100% pure code!
Other Interesting Links
- GitHub: Debdutta-Panda / J3 (miscellaneous composables)
- GitHub: jump-sdk / jetpack_compose_country_code_picker_emoji
- 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?!?