jetc.dev Newsletter Issue #53
Published: 2021-02-23
In all likelihood, tomorrow will see the dawn of the beta01
release of Compose
and Compose UI! So, in this issue, we link to the livestream and take a look at
what Google is likely to do in the next few months.
Along with that, we have some chips (without fish), look at the swipe-to-reveal pattern and role semantics for accessibility, and peek at a bunch of Compose for Desktop projects on GitHub.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
Solid and Outlined Chips
Chips — words or phrases surrounded by a square or rounded rectangle — are a
popular UI for keywords. You can implement them fairly easily in Compose UI by
wrapping your Text()
with a Surface()
that sets its border
and color
, as we see
in this week’s highlighted Stack Overflow thread.
Performance: It’s Getting Beta
As we continue down the track towards a stable release, developers are getting
increasingly worried about perceived performance issues with Compose UI. Google’s
Adam Powell explained where Google’s focus will be in the coming months and put out a call
for your help, in this week’s highlighted Kotlinlang #compose
Slack thread.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Livestream: #TheAndroidShow Jetpack Compose Livestream
This presentation, scheduled for 24 February at 9am Pacific Time, is likely to be
where the Compose beta01
release is announced!
Swipe to Reveal in Jetpack Compose
Denis Rudenko is exploring the swipe-to-reveal UI pattern, where a short horizontal
swipe gesture on a list row uncovers actions to take against that item, such as edit
or delete. Compose UI does not offer this “out of the box”, so Denis created a
DraggableCard()
to implement this pattern.
(De)composing Action Bars Continued
Thomas Künneth follows up last week’s post
and looks more at implementing action bar patterns in Compose UI. This time, he
focuses on actions and drop-down menus, translating their menu resource into
Compose UI equivalents for use with a Scaffold()
and its TopAppBar()
.
ShapeableView in Jetpack Compose. Part 2
Rasul Aghakishiyev returns with a continuation of his previous work
on creating ShapeableView()
. This time, he adds rounded corners as an option,
along with the previous cut-corners implementation.
Role Semantics in Jetpack Compose
Bryan Herbst continues his coverage of Compose UI’s accessibility options, this
time looking at the semantics()
modifier and its role
parameter. This lets you
describe the general nature of a composable based upon classic UI roles (e.g., button),
to help TalkBack and similar accessibility services describe your UI to visually
impaired users.
Jetpack Compose: What you need to know, pt. 2
Cleverlance continues their analysis of Compose and Compose UI, following up on their original post, showing some of the pros and cons of using Compose in production apps.
Resource Roundup
100% pure code!
GitHub: app-outlet / karavel
GitHub user app-outlet has released another navigation solution for Compose, with an eye towards Compose for Desktop.
GitHub: maxhvesser / kotdoc-android
Maximilian Hvesser-Lewis is creating a mobile client for the Kotlin documentation, using Compose UI for the user interface.
GitHub: theapache64 / name-that-color-desktop
GitHub user theapache64 opened up a pair of repositories recently. This one is a Compose for Desktop app for identifying the name for a user-selected color. This includes integration with the desktop clipboard and even generates a Compose UI snippet for defining that color in your app. theapache64 also released stackzy, a tool written in Compose for Desktop for examining apps on a connected device and determining what major libraries they use.
GitHub: Reyurnible / OthelloPackComposeDesktop
Shun Hosaka created an Othello (also known as Reversi) game, where the UI is implemented in Compose for Desktop.
…And One More Thing
It is all but assured that tomorrow, we will get the beta01
release of
Jetpack Compose.
Last week, I argued that this beta release was rushed, and I stand by that assessment. However, “time and tide wait for no man”, so Compose will now take another major step towards its first stable release.
Here is what I expect will transpire:
-
beta01
will be released tomorrow. -
Google will continue with the every-other-week release cadence, outside of occasional hiccups, at least through the beta releases. I would not be shocked if things slow down when we get to
rc
releases, though. Most Jetpack libraries are slower about updatingrc
versions. -
Google likes to claim that a beta release offers a stable API surface. In reality, API changes are not uncommon in betas, though usually they are more limited than the API changes that we see in alphas. Plus, APIs are more fluid in the run-up to a stable 1.0.0 release than in later releases. So, while major refactorings are probably done for now, I expect that the API will still change somewhat during the Compose beta period.
-
Google’s primary focus will be on performance and stability, and API changes will be tied into those concerns. In other words, we are unlikely to get new composables or modifiers, but we might get some changes to parameter lists, as performance and stability fixes trigger the need for new parameters, changes from booleans to enums, and the like.
-
We will get six beta releases or more. That stems mostly from the sheer size of Compose and Compose UI, as there is a lot of performance and stability ground to cover. That will take time, and if they stick with the bi-weekly release cadence, that means a lot of beta releases. However, with fewer changes to the API, taking on beta upgrades hopefully will be fairly easy.
To me, the biggest mystery in terms of timeframe is how they will handle the RC releases, in terms of cadence and number. But, between beta and RC releases, I would not be surprised if we are still 4-5 months away from a stable 1.0.0 release. That is well within Google’s stated timeline, which called for a stable 1.0.0 release by the end of 2021. People looking to provide educational resources related to Compose and Compose UI (👋) can use the time!
Regardless of that timeframe, though, the next phase of Jetpack Compose’s evolution begins tomorrow. It will be interesting to see how it turns out!
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?!?