Android & Kotlin Technical Articles

Detailed articles on Android development, Jetpack Compose internals, Kotlin coroutines, and open source library design by skydoves, Google Developer Expert and maintainer of Android libraries with 40M+ annual downloads. Read practical guides on Retrofit, Compose Preview, BottomSheet UI, coroutine compilation, and more.

Exclusive Articles
RSS

This is a collection of private or subscriber-first articles written by the Dove Letter, skydoves (Jaewoong). These articles can be released somewhere like Medium in the future, but always they will be revealed for Dove Letter members first.

How Compose Synchronizes with Android's Choreographer

Every frame in a Compose application starts with a signal from the Android Choreographer. The Choreographer is the system component that schedules work to run in sync with the display's VSYNC pulse, ensuring that UI…

ComposeCoroutinesAndroid
Sunday, May 10, 2026
Optimize App Performance by Mastering Stability in Jetpack Compose

Compose's performance model centers on one idea: skip work that does not need to happen. When the runtime can prove that a composable's inputs have not changed, it skips re-execution entirely. This optimization, called…

ComposePerformanceAndroid
Friday, April 10, 2026
Build Your Own Landscapist Image Plugin in Jetpack Compose

Landscapist provides a composable image loading library for Jetpack Compose and Kotlin Multiplatform. Among its image composables, LandscapistImage stands out as the recommended choice: it uses Landscapist's own…

ComposeAndroidKotlin
Saturday, March 28, 2026
How Compose Preview Works Under the Hood

Every Android developer using Compose has written @Preview above a composable and watched it appear in the Studio design panel. But what actually happens between that annotation and the rendered pixels? The answer…

ComposeAndroidKotlin
Sunday, March 15, 2026
Five Algorithms and Data Structures Hidden Inside Jetpack Compose

Jetpack Compose is a UI toolkit on the surface, but its internals draw from decades of computer science research. The runtime uses a data structure borrowed from text editors to store composition state. The modifier…

ComposeAndroidKotlin
Wednesday, March 11, 2026
Activity Lifecycle Internals: How the Framework Drives onCreate/onResume/onDestroy

Every Android developer has overridden onCreate(), onResume(), and onDestroy(). You write your initialization logic, register listeners, and clean up resources, trusting that the framework will call these methods at the…

ArchitectureAndroid
Sunday, February 15, 2026
Building a Google Maps Style Bottom Sheet with Jetpack Compose

Google Maps popularized a bottom sheet pattern that most Android developers recognize immediately: a small panel peeking from the bottom of the screen, expandable to a mid height for quick details, and draggable to full…

ComposeCoroutinesAndroid
Sunday, February 15, 2026
R8 Keep Rule Resolution: How the Android Compiler Decides What Lives and What Dies

Every Android release build passes through R8, the whole-program optimizing compiler that shrinks, obfuscates, and optimizes your code before it ships to users. At the center of R8's decision-making are keep rules, the…

Android
Tuesday, February 3, 2026
ViewModel: How Configuration Change Survival Actually Works

Android's ViewModel is one of the most widely used architecture components, yet its core survival mechanism remains a mystery to most developers. You annotate a class, call viewModels() in your Activity, and your state…

AndroidKotlin
Wednesday, January 28, 2026
Introducing the Experimental Styles API in Jetpack Compose

Jetpack Compose's Modifier system has been the primary way to apply visual properties to composables. You chain modifiers like background(), padding(), and border() to build up the appearance and behavior of UI…

ComposeAndroidKotlin
Wednesday, January 21, 2026
Compose Compiler Stability Inference System

A comprehensive study of how the Compose compiler determines type stability for recomposition optimization. Table of Contents Compose Compiler Stability Inference System Table of Contents Chapter 1: Foundations 1.1…

ComposeAndroidKotlin
Friday, October 3, 2025
A Study of the Jetpack Compose SlotTable Internals

The SlotTable is the in-memory data structure that represents the UI tree of a Jetpack Compose application. Instead of a traditional tree of objects, it's a highly optimized, flat structure designed for extremely fast…

ComposeArchitectureAndroid
Sunday, September 28, 2025
A Study: Building a Simple Dependency Injection Container in Kotlin for Android

Dependency Injection (DI) is a core software design pattern that promotes loose coupling and enhances the testability and scalability of applications. While powerful libraries like Hilt and Koin are the standard for…

AndroidKotlin
Sunday, August 31, 2025
A Study of R8 Modes and Their Impact on Android Applications

R8 is the default code shrinker, optimizer, and obfuscator for Android applications. It plays a crucial role in reducing APK size and improving runtime performance. While R8 is designed to be a drop-in replacement for…

Android
Sunday, August 31, 2025
A Study of API Guidelines for Building Better Jetpack Compose Components

The Jetpack Compose ecosystem has grown exponentially in recent years, and it is now widely adopted for building production-level UIs in Android applications. We can now say that Jetpack Compose is the future of Android…

ComposeAndroidKotlin
Sunday, August 24, 2025

Like what you see?

Subscribe to Dove Letter to get weekly insights about Android and Kotlin development, plus access to exclusive content and discussions.