jetc.dev Newsletter Issue #267

Published: 2025-06-03

This week, we have questions about navigation, learn what’s new in Compose, and see how to automate accessibility testing. Plus, we render ribbons, add overscroll effects, and try to show snackbars exactly once.

Ooooo… What Did We Get?

Reviewing the release notes for the latest Jetpack Compose update!

Nav3 received an update to 1.0.0-alpha02, and there are new Nav3-adjacent artifacts:

  • androidx.lifecycle:lifecycle-viewmodel-navigation3
  • androidx.lifecycle:lifecycle-viewmodel-navigation3-android

One Off the Stack, One Off the Slack

You’ve got questions. That’s understandable!

How Do I Pass Parameters in Navigation?

Because parameters on Navigation for Compose routes are optional, some people miss the fact that they are indeed available. Instead, some developers try defining the same route multiple times to pass different values to their composables and run into problems as a result. See more in this week’s highlighted Stack Overflow question.

What is the Native Android Transition for Nav for Compose?

Navigation for Compose lets you specify transition animations between screens, but the default (a fade) is not platform-specific. Not only is there no Android-specific default, but there is no Android-specific implementation at all, as we learn in this week’s highlighted Kotlinlang #compose-android Slack thread.

Composable Commentary

Posts, videos, and other new information related to Jetpack Compose!

Video: What’s new in Jetpack Compose

One slightly-delayed Google I|O 2025 video is this one, featuring Google’s Jolanda Verhoef (Mastodon, Bluesky) , focusing on Compose and what has all been added recently.

Medium: Automate A11y Testing in Compose

Nav Singh (Mastodon) explores the Accessibility Testing Framework (androidx.compose.ui:ui-test-junit4-accessibility) and how to use enableAccessibilityChecks() to identify accessibility issues within your Compose for Android UI.

Wrapping a Fancy Ribbon around any Composable

sinasamaki (Mastodon, Bluesky) examines how to implement an animated ribbon effect, wrapping around a composable on the Z axis for a 3D effect. The result is a ribbon() modifier that you can apply where needed!

Medium: Fixing LaunchedEffect Triggering Before a Screen is Visible in Jetpack Compose

Rohit Kumar ran into problems with LaunchedEffect() being executed more frequently than expected, tied into navigation transitions between screens. Rohit demonstrates a OnResumeEffect() that helps to alleviate this problem.

Compose/Wasm and the Kotlin Playground

John O’Reilly pointed out on Bluesky that, “As announced at @kotlinconf.com, we can now write Kotlin/Wasm based Compose for Web code in play.kotl.in/compose”.

Resource Roundup

100% pure code!

GitHub: AungThiha / SnackbarChannel

“Exactly once” state management has long been a pain. Aung Thiha offers a Channel-based way to trigger snackbars for Compose Multiplatform that may avoid some of that pain.

GitHub: SomnioNocte / overscroll

GitHub user SomnioNocte brings us bouncedOverscroll() and delegateOverscroll() modifiers to bring overscroll spring behavior to our scrollable containers in Compose for Android.

GitHub: muazkadan / switchy-compose

Muaz Kadan created some Material3-based switch implementations for Compose Multiplatform, including some inspired by iOS designs and ones with custom icons or labels in the switch thumbs.

GitHub: foxlitegor / compose-calendar

Егор Карпов published another calendar composable for Compose for Android, with single or multiple date selection, paging horizontally by month, disabled dates for selection, and more.