android-dynamic-feature-moduleslisted
Install: claude install-skill lenorebreakneck630/claude-zero-to-hero-android-KMP
# Android Dynamic Feature Modules
## Overview
Dynamic Feature Modules (DFMs) let you ship features as separate APK splits installed on demand via Play Feature Delivery. This reduces base APK size and defers download of rarely used features.
**DFMs are not the same as multi-module architecture.** Multi-module is a build-time concern (faster builds, clear boundaries). DFMs are a delivery concern (smaller installs, on-demand code). A feature can be in its own Gradle module AND be a dynamic feature — these are orthogonal.
Related skills: `android-module-structure`, `android-navigation`, `android-di-koin`.
---
## When to Use Dynamic Features
Use DFMs when:
- A feature is used by < 20% of users (e.g. AR mode, admin panel, onboarding wizard)
- A feature adds > 2 MB to the download size
- You want to offer optional capabilities (e.g. language packs, game levels)
Do NOT use DFMs for:
- Core navigation paths (login, main feed)
- Features needed on first launch
- Reducing build complexity (use regular modules for that)
---
## Delivery Types
| Type | When installed | Use case |
|---|---|---|
| `on-demand` | App requests it at runtime | Rarely used features |
| `install-time` | With the base APK (but still a separate split) | Locale splits, density splits |
| `fast-follow` | Shortly after base install, in background | Features needed in first session |
---
## Gradle Setup
### App module (`build.gradle.kts :app`)
```kotlin
android {
dynamicFeatures += setOf(":feature-cam