Android 17 Is Here — Compose-First, Adaptive-First, AppFunctions, and What Breaks at SDK 37
Android 17 (Cinnamon Bun, API 37) landed June 16, 2026 — and it's the most opinionated release in years. Google isn't just shipping features; it's lay...
Android · Kotlin · Compose · Architecture
In-depth tutorials, deep dives, and field notes on shipping production Android apps — from a 14+ year engineering veteran.
Android 17 (Cinnamon Bun, API 37) landed June 16, 2026 — and it's the most opinionated release in years. Google isn't just shipping features; it's lay...
The 30 most commonly asked Kotlin interview questions with clear answers and code examples. Covers basics (val/var, null safety, string interpolation)...
Android 16 (API level 36) is less about new UI features and more about making app behavior predictable and reliable. It introduces refinements in navi...
Compose Navigation uses Kotlin instead of XML. This step-by-step guide builds from the mental model (stack of cards) through NavController, NavHost, r...
The Navigation Component replaces manual FragmentTransaction with a declarative graph, type-safe args, and managed back stack. This guide covers nav_g...
Multi-module splits your app into focused modules with enforced boundaries. This guide covers module types (app, feature, core), the dependency graph ...
MVI enforces unidirectional data flow with a single state object, sealed intents, and a pure reducer. This guide covers the MVI cycle, MVVM vs MVI com...
Clean Architecture divides apps into Presentation, Domain, and Data layers with inward dependencies. This guide covers the dependency rule, Domain (pu...
The Repository layer sits between ViewModel and data sources, exposing a clean API while hiding data origins. This guide explains single source of tru...
Should you use LiveData, StateFlow, or SharedFlow? This guide gives a definitive answer with a complete comparison table (15 properties), the same Vie...
MVVM is the recommended architecture for Android — Google's guide is built on it. This guide covers all three layers (View, ViewModel, Model) with pre...
Compose is fast by default — but easy to make slow accidentally. This guide covers how smart recomposition and skipping work, stable vs unstable types...
Theming in Compose uses Kotlin objects and CompositionLocal instead of XML styles. This guide covers MaterialTheme setup, ColorScheme with 30 semantic...
Should you use Compose or XML? This guide gives an honest comparison (15-feature table), where Compose wins (less boilerplate, declarative state, prev...
Why does my composable recompose when nothing changed? Why doesn't it recompose when I expect it to? This guide covers the Composition lifecycle (ente...