Context
Lottie (com.airbnb.android:lottie-compose:6.7.1) is Android-only. It's used for the empty state animation in the favorites tab.
Affected files
library/designsystem/src/main/java/.../LottieAnimationComposable.kt — wrapper composable
library/designsystem/src/main/java/.../EmptyStateAnimation.kt — uses LottieCompositionSpec.RawRes(R.raw.empty_state_animation)
library/designsystem/src/main/res/raw/empty_state_animation.json — animation JSON
Options
| Option |
Pros |
Cons |
Compottie (io.github.nicholasmata:compottie) |
KMP Lottie, similar API |
Newer library, less battle-tested |
expect/actual wrapper |
Keep existing Android impl |
Need iOS implementation separately |
| Replace with static illustration |
No dependency |
Loses animation |
What needs to happen
- Choose a replacement approach
- Update
libs.versions.toml with new dependency
- Rewrite
LottieAnimationComposable.kt using new library or expect/actual
- Move animation JSON to CMP resources directory (or
expect/actual resource loading)
- Update
EmptyStateAnimation.kt to use new API
Acceptance Criteria
Context
Lottie (
com.airbnb.android:lottie-compose:6.7.1) is Android-only. It's used for the empty state animation in the favorites tab.Affected files
library/designsystem/src/main/java/.../LottieAnimationComposable.kt— wrapper composablelibrary/designsystem/src/main/java/.../EmptyStateAnimation.kt— usesLottieCompositionSpec.RawRes(R.raw.empty_state_animation)library/designsystem/src/main/res/raw/empty_state_animation.json— animation JSONOptions
io.github.nicholasmata:compottie)expect/actualwrapperWhat needs to happen
libs.versions.tomlwith new dependencyLottieAnimationComposable.ktusing new library orexpect/actualexpect/actualresource loading)EmptyStateAnimation.ktto use new APIAcceptance Criteria
com.airbnb.android:lottie-composedependency in shared modules