# Native Android — Kotlin + Jetpack Compose
URL: https://wwadd.dev/stacks/android-kotlin-compose
Last verified: 2026-09-30

An Android app with Compose screens and Kotlin services around platform APIs, with explicit state ownership, device testing, and task-specific background scheduling.

## When to use it
- Android is the first platform being implemented
- Device APIs and Android-specific behavior shape the product
- The team can maintain Android-specific code and test across device vendors
- A separate iOS implementation is acceptable if it is needed later

## How the pieces fit
Jetpack Compose renders UI from state; ViewModels expose screen state and receive user actions, while repositories and platform services own data and device operations. Kotlin coroutines coordinate asynchronous work without putting side effects in composable rendering. Choose a background API for the actual task: WorkManager handles persistent deferrable work, while user-visible ongoing operations may need a foreground service under Android's restrictions. Native code does not bypass permission, battery, or lifecycle rules. Test the core hardware flow on physical devices and handle process recreation before polishing screens.

## The tech and its role
- Kotlin: Application logic and asynchronous work
- Jetpack Compose: State-driven Android UI
- ViewModel + repositories: Screen state and separation of data operations
- Android device APIs: Hardware access with permissions and lifecycle handling
- WorkManager / foreground services: Background mechanism selected for the task and OS restrictions
- Android Studio + Gradle: Builds, debugging, profiling, and device testing

## Real-world examples
- Now in Android: Google's public reference app is built with Kotlin and Jetpack Compose and documents its architecture and adaptive UI. Reference app example; not a claim that it implements Bluetooth or AR. (source: https://github.com/android/nowinandroid)
- Jetchat: Google's Compose chat sample shows state management, a ViewModel, and interoperability with existing Views. A UI learning sample, not a production messaging backend or background-service template. (source: https://github.com/android/compose-samples/blob/main/Jetchat/README.md)

## Skip if
Skip if iOS is the first target, or one shared UI implementation across iOS and Android is a hard requirement.

