jetc.dev Newsletter Issue #122
We already have
In addition, we look at activity labels and coroutine scopes. We explore Lint
rules, fragments in composables, and a
TwoPaneLayout. We see libraries
for Markdown, release notes, and onboarding.
And I am very happy to see that JetBrains bought some linen. Seriously.
Reviewing the release notes for the latest Jetpack Compose update!
The ink had barely dried on RC01 releases for Compose and Wear Compose, and we get RC02!
1.2.0-rc02 has very little in it, most notably removing the
from some easing functions in Compose Animation.
1.0.0-rc02 has a few fixes to card and chip gradients, and not much
Stable releases for both seem imminent!
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
How Do We Get Our Activity’s Label?
<activity> manifest entry can have an
android:label attribute. That might
be useful for a
TopBar(), but our composables usually are not member functions
of an activity. See how to load that label in this week’s highlighted Stack Overflow
How Do We Choose the Right Scope?
rememberCoroutineScope(), and we have
Which should we use, and when? Learn the scope of those scopes in this week’s highlighted
#compose Slack thread!
Posts, videos, and other new information related to Jetpack Compose!
Which lint rules does Jetpack Compose ship with?
Vinay Gaba was wondering what all the Lint rules were that might help Compose developers write better composables. He found a few dozen and shows you how to find them and how to adjust their severity to fit your team’s needs.
Compose sample app: UI state with Flow, offline first
James Shvarts walks us through a sample app that renders lists and grids of
movie posters, including swipe-to-refresh, leveraging
Flow, Room, and Compose UI.
Jetpack Compose TwoPaneLayout update
Microsoft has been maintaining a library of composables designed for the Surface Duo
and other dual-screen foldables. In this post, Joy Liu and Kristen Halper
outline some recent changes to
TwoPaneLayout that affect navigation, to offer
more flexibility while also reworking the API to be a bit more scope-centric.
Medium: Load Fragments in Jetpack Compose: Beyond What Google Taught
A fragment-centric app can be migrated to Compose UI in a bottom-up fashion, converting each fragment to use Compose UI internally. In this post, Elye focuses on the other direction: a top-down migration that converts the activity to Compose UI before it converts that activity’s fragments. This requires composables to manipulate fragments, and Elye explores the issues with four solutions before settling on a fifth.
Building Accessible Android Apps with Jetpack Compose
Devanshu Chandra looks at how to use modifiers like
semantics() to help connect
composables to the accessibility framework.
Custom Toast in Android using Jetpack Compose
Toasty is a library for displaying customized
Toast-style popups. Geeks for Geeks member chaitanyamunje contributed a post
showing how to integrate that library with Compose UI, to show those popups as needed
Medium: Performance best practices for Jetpack Compose (GoogleIO 2022 recap)
Medium user BattleShip Park walks us through some of the performance-related
recommendations coming from Google I|O, from
LazyList keys and deferring state reads.
Other Interesting Links
- How to Add Bottom Navigation in Jetpack Compose?
- Medium: Super Easy Navigation between Composable’s in Jetpack Compose
- Medium: Passing args using Jetpack Compose navigation
- Medium: How to show Snackbar in Jetpack Compose?
- Medium: Power Mechanism for Jetpack Compose with MVVM for Navigation, Toast, etc.
- Medium: Jetpack Compose Dialog: control synchronously from ViewModel with power
- Deep Links in Android using Jetpack Compose
100% pure code!
GitHub: Resaca Hilt
Sebas LG created a way to have Jetpack
ViewModel instances per composable via
GitHub: Yazan98 / Markdown-Compose
Yazan Tarifi brings us another Markdown rendering library, in the form of a
MarkdownViewComposable() with a
MarkdownConfig class for defining whether links
work, if the results are scrollable, etc.
GitHub: sebastinto / bulletin
GitHub user sebastinto created a
BulletinScreen() composable to render a screen
for release notes for your app.
GitHub: cyeksan / onboarding
Cansu Aktaş offers an
OnboardingScreen() for a page-at-a-time onboarding
flow, design for first-time use of an app or some feature.
Other Interesting Links
- GitHub: massivemadness / Fragula (swipe to dismiss)
- GitHub: St4B / smart-tabs (sync
TabRow()with column content, described in this blog post)
- GitHub: kaleidot725 / text-editor-compose (multiline text editor, described in this blog post)
- Gist: xxfast / DateVisualTransformation.kt (editor transform to YYYY-MM-DD)
…And One More Thing
One of my long-term gripes about Kotlinlang Slack as the primary Compose support point is that “what happens in Slack, stays in Slack”. Slack is invite-only and unindexable by search engines. While JetBrains seems to do a good job with processing requests to join, a mandatory registration process just to read adds a lot of friction.
That just changed.
JetBrains is now using Linen, a SSaaS (Slack Surfacing as a Service) offering. Linen simply does what Slack itself should be doing: having a read-only publicly-searchable copy of the contents of a should-be-public Slack workspace.
contains an archive of all Kotlinlang Slack channels, including key ones like
#compose. Individual threads
get their own pages, such as this one
about Vinay Gaba’s work in identifying Compose-related Lint rules. There were a
few hiccups at the time of launch, but right now the site is very responsive.
This is awesome. I am pleased beyond words that JetBrains is doing this and that Linen exists. And, it has a slight impact on this newsletter: I can now start linking to Linen pages for the Slack threads that I highlight in “One Off the Stack, One Off the Slack”.
Kotlinlang-on-Linen is a very welcome development, and I look forward to the Compose ecosystem using this in interesting ways!
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
- 2023-03-14: Compose RC! Wear Compose alpha! Grayscale composables! Updating our Compose dependencies! MVVM! Bottom sheets! And... another Figma-to-composable plugin?!?
- 2023-02-28: Updates to the Compose family of artifacts! Layout()! UiAutomator! Pull-to-refresh! @email@example.com on adding animation sizzle! ExoPlayer! PIN entry! And... @firstname.lastname@example.org is on TV?!?
- 2023-02-21: Modifiers! Drawing! Errors! Paging (and testing paging)! QR codes! KMM templates! And a correction from @email@example.com!