Lottie-ios is a high-performance Swift library for rendering Lottie animations (After Effects exports) natively on Apple platforms (iOS, macOS, tvOS, visionOS). It provides two rendering engines: a full-featured Main Thread engine and a GPU-accelerated Core Animation engine, with automatic fallback based on feature compatibility. The library offers UIKit (LottieAnimationView) and SwiftUI (LottieView) wrappers, interactive controls (AnimatedButton, AnimatedSwitch), dynamic property overrides via a value provider system, and support for the .lottie compressed archive format. It includes embedded, reusable libraries for ZIP archive handling (ZipFoundation), declarative UI model configuration (EpoxyCore), and LRU caching. The codebase is well-structured with extensive test coverage including snapshot tests, keypath logging, and performance benchmarks, and is actively maintained by Airbnb.
This repository is the core Android implementation of the Lottie animation library, designed to render vector-based animations (exported from Adobe After Effects as JSON) natively on Android devices. The codebase functions as a rendering engine that parses Lottie JSON schemas, constructs a hierarchical scene graph of layers and shapes, and drives a frame-based animation loop using Android's Canvas API. It supports two primary integration points: a traditional View-based API (LottieAnimationView) for XML layouts and a Jetpack Compose API (LottieAnimation) for modern declarative UIs. The system handles complex rendering features including masks, mattes, gradients, text, and dynamic property overrides at runtime. Architecturally, the project is a multi-module Gradle build consisting of a core library (lottie), a Compose integration module (lottie-compose), and extensive testing/sampling infrastructure. The core logic relies on a custom JSON parser (JsonReader) to deserialize animation data into model objects (LottieComposition), which are then rendered by LottieDrawable or LottiePainter. The architecture emphasizes performance through offscreen rendering strategies (OffscreenLayer) and memory management via bitmap pooling. It also implements a robust caching system (LottieCompositionCache) and async loading mechanisms (LottieCompositionFactory) to handle network and asset sources efficiently. The codebase demonstrates high craftsmanship in its rendering engine, particularly in handling edge cases like 3D rotations, blend modes, and text rendering across different Android API levels. It maintains parity between View and Compose implementations, ensuring consistent behavior across UI paradigms. The testing strategy is rigorous, utilizing snapshot testing (snapshot-tests) to verify visual fidelity across various hardware configurations and API levels, preventing visual regressions in the complex rendering logic.
This is a production-grade React library that wraps Airbnb's lottie-web to render After Effects animations. It provides declarative React components (<Lottie>, <LottieSvg>, <LottieLight>), hooks (useLottie, useLottieSvg, useLottieLight), a full player UI with play/pause/seek/speed controls (LottieControls), and an interactivity layer for scroll-driven or visibility-triggered animations. The library ships three build variants optimized for bundle size, all with 100% statement coverage and strict TypeScript types. It supports both React 18 and 19, is SSR and React Server Component safe, and enforces per-import size budgets via CI. The codebase demonstrates an unusually rigorous engineering culture with no technical debt shortcuts.
This repository provides a Swift Package Manager wrapper for the Lottie iOS animation library. Instead of requiring users to depend on the large Lottie iOS source repository, it points to a precompiled XCFramework from the official Lottie iOS releases, significantly reducing download times. The package consists of a binary target for the Lottie framework and a stub target that works around a known Swift Package Manager issue (https://github.com/apple/swift-package-manager/issues/6069) which prevents binary frameworks from being embedded correctly in Xcode projects without at least one source file in a non-binary target. The architecture is minimal: the Package.swift defines the binary target pointing to a specific version of the Lottie XCFramework and includes a stub target with an empty Swift class. An example SwiftUI application demonstrates how to use the Lottie animation view, and a simple test verifies that the Lottie module can be imported and used. The repository is actively maintained with continuous integration workflows that test across multiple platforms and Xcode versions, ensuring compatibility with the latest Swift releases. There is no significant technical drift, as the package uses modern Swift tools versions and tracks the latest Lottie iOS releases.
This repository is the unified documentation site for the Lottie animation ecosystem, hosted at lottie.airbnb.tech. It is a static website built with Docsify, serving markdown documentation for Lottie's Android, iOS, Web, React Native, Windows, and After Effects integrations. The repo contains no source code for the Lottie libraries themselves; those live in separate repositories (e.g., lottie-android, lottie-ios). The documentation covers installation, usage, API references, supported After Effects features, community showcase, and contribution guidelines. The site is purely informational and does not implement any application logic or data processing.