Lottie (Android)
Airbnb's animation library for Android that renders Adobe After Effects animations exported as JSON via the Bodymovin plugin — without code-generated animation drawables or manual frame-by-frame art. Lottie plays vector animations at any resolution without pixelation. Native Android support via LottieAnimationView (XML) and LottieAnimation composable (Jetpack Compose). Supports looping, speed control, dynamic properties (change colors/sizes at runtime), progress-driven animations (scrub animation frame by frame), and network-loaded JSON. Used for loading spinners, onboarding illustrations, success/error states, and micro-interactions in agent UIs.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
No network calls by default — animations bundled locally. Network-loaded animations should validate JSON source; malicious Lottie JSON is unlikely but validate URLs. No sensitive data exposure risk for animation library.
⚡ Reliability
Best When
Your design team produces After Effects animations and you need to render them exactly in your Android agent app — Lottie is the standard bridge between motion design and Android implementation.
Avoid When
You don't have After Effects animations (use Compose Animation APIs), you need physics-based interactions, or you need 3D rendering.
Use Cases
- • Add polished loading animations to agent app screens — Lottie JSON from LottieFiles plays smooth vector spinner while agent processes requests, replacing placeholder progress indicators
- • Display agent status animations in Jetpack Compose — LottieAnimation composable with isPlaying and iterations for agent thinking/idle/success state visual feedback
- • Drive agent onboarding illustrations from scroll position — LottieAnimationView with setProgress(scrollFraction) creates scroll-linked animations for agent feature introductions
- • Dynamic agent brand color injection at runtime — Lottie dynamic properties allow changing animation colors to match agent theme without re-exporting After Effects files
- • Load agent celebration or error animations from URL — Lottie supports loading JSON animations from network URLs for remotely updateable agent UI feedback animations
Not For
- • Complex interactive animations with physics — Lottie plays pre-authored animations; for physics-based agent UI interactions, use Jetpack Compose spring animations or Rebound
- • 3D animations — Lottie is 2D vector only; for 3D agent app animations, use Filament or Unity integration
- • Programmatically generated animations — Lottie plays exported After Effects JSON; for code-driven agent UI animations, use Jetpack Compose Animation APIs or ObjectAnimator
Interface
Authentication
Animation library — no auth concepts. Network-loaded animations use application's OkHttp client with standard auth headers if needed.
Pricing
Lottie-android is Apache 2.0 licensed, maintained by Airbnb. Free for all use. LottieFiles (animation marketplace) is a separate commercial service.
Agent Metadata
Known Gotchas
- ⚠ LottieComposition must be parsed async — parsing Lottie JSON on main thread causes ANR for complex animations; in Compose use rememberLottieComposition() which parses in background; in Views use LottieAnimationView which handles async loading automatically
- ⚠ Lottie 6.x Compose API changed — Lottie 6.0+ uses LottieAnimation composable with LottieCompositionSpec; older apps using LottieAnimationView in Compose via AndroidView need migration; check version-specific Compose integration docs
- ⚠ Asset bundling affects APK size — Lottie JSON files bundled in assets/ folder add to APK size; complex agent onboarding animations can be 200KB-2MB each; load from network with caching for infrequently shown agent animations
- ⚠ Dynamic properties require keypath matching — Lottie dynamic properties (color overrides) use keypath strings matching After Effects layer names; layer renames in After Effects break dynamic property keypaths; coordinate naming conventions with design team
- ⚠ Hardware layer reduces rendering overhead — for looping agent animations, set lottieView.setLayerType(View.LAYER_TYPE_HARDWARE, null) or use RenderMode.HARDWARE in Compose for GPU-accelerated compositing on complex animations
- ⚠ Lottie Compose recomposition on progress change — animating progress with animateLottieCompositionAsState recomposes parent composables on each frame; isolate LottieAnimation in its own composable to limit recomposition scope in agent UI
Alternatives
Full Evaluation Report
Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Lottie (Android).
Scores are editorial opinions as of 2026-03-06.