jetc.dev Newsletter Issue #299

Published: 2026-01-27

This week, we look at security, PinnableContainer, and nested scrolling. Plus, we see a Gradle plugin to add tvOS support to Compose Multiplatform.

Note that the “One Off the Stack, One Off the Slack” section may tend to come and go in future issues, and it is gone in this one. The Kotlinlang Slack archive has not updated in weeks, and Stack Overflow is “a hit or miss proposition” nowadays.

Composable Commentary

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

Medium: Android Security in the Age of Jetpack Compose: From Task Hijacking to Tapjacking

Often, we think of security when it comes to things like communication with servers. However, UIs can have security issues. Roman Speranskii walks us through a few attacks and demonstrates how to defend against them in your Compose for Android apps.

Greg Williams reviews the state of Nav3 in Compose Multiplatform and whether it makes sense to adopt it in your project, especially if you already have a working Nav2 implementation.

ImmutableList vs. List in Jetpack Compose: Rethinking “Best Practice” After Strong Skipping Mode

Sutaek Oh explores whether or not there remains value in using ImmutableList and similar types, now that Strong Skipping Mode is the default for Compose builds. The conclusion is that ImmutableList has limited benefits, and occasional costs, over just using List.

Medium: You Shall Not Pass or Dispose

Burak Karaduman points out a challenge with some user interfaces, like chatbots: a composable might be active (e.g., receiving a streamed response from AI) yet still be scrollable off the screen. If our composable gets disposed mid-stream, we could run into some performance issues or other challenges. The solution is PinnableContainer(), the focus of this post.

How to fix the Compose preview naming problem

Alex Zhukovich (Mastodon, Bluesky) reminds us of the role of PreviewParameterProvider in creating composable previews. Alex then demonstrates how the new getDisplayName() function that you can override in your provider gives you the option of having better names than “uiState 0”, “uiState 1”, etc.

Unlock MultiPreviews in Compose Multiplatform: The Super Provider Pattern

In Compose for Android development, we are used to multi-previews, where a single annotation triggers multiple previews, especially based on overall UI state (e.g., dark/light theme). Gemma Lara Savill notes that this is not presently available in Compose Multiplatform and demonstrates a workaround, using PreviewParameterProvider.

Introducing the Experimental Styles API in Jetpack Compose

Jaewoong Eum (Mastodon, Bluesky) walks us through the upcoming Style API in Compose Foundation, for managing core UI states, especially those tied to interaction events, such as widget backgrounds.

Building a WebView control for Compose Desktop

Danylo Didkovskyi and the jxBrowser team is building a WebView-style widget for Compose for Desktop. This post outlines some of the unique challenges in wrapping a Chromium-based browser in a composable, including routing input events.

Demystifying Nested Scrolling in Jetpack Compose

Wilberforce Uwadiegwu takes us on a deep dive into nested scrolling, such as the classic parallax effect applied to app bars as the content scrolls towards or away from the top of the collection. This post explains the use of NestedScrollConnection, how it connects to scrollable containers, and how to consume scroll events, fling velocities, etc.

Resource Roundup

100% pure code!

GitHub: sajidalidev / compose-tvos

Sajid Ali has extended Compose Multiplatform support to include tvOS, by way of a Gradle plugin. You wind up with new targets like tvosArm64(), and they get some tvOS-compatible Compose Multiplatform targets in lieu of standard ones.

GitHub: felixny / InkFlow

GitHub user felixny brings us a “beautiful Jetpack Compose UI library for creating fluid motion effects and animations with organic ink bleed reveals.”

GitHub: robyrawat / SuperChart

Ravi Rawat brings us line, bar, and pie charts for Compose for Android and Material3.

GitHub: ArcaDone / AwesomeUI

GitHub user ArcaDone implemented ProgressionChart(), DeformableCornerItem(), TrackerContainer(), RadarChart(), and more composables.

GitHub: miller198 / ComposeCircleAudioVisualizer

Seungkyu Kim brings us circular audio visualizations, with support for FFT and waveform data sources, normalization/filtering/scaling data transformations, and more.