Skip to content
CAI
Software that uses CAICheck a score

xvrh/lottie-flutter

68.0

Adequate · 19 September 2026

19.7k

lines of production code

Dart

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Flutter package that renders Adobe After Effects animations exported via Bodymovin across multiple platforms. It provides a comprehensive engine for parsing Lottie JSON compositions, managing keyframe-based animations, and handling complex visual effects like shapes, gradients, and masks. The library supports loading animations from various sources, including assets, networks, and memory, while offering runtime modification capabilities and performance optimizations through caching and frame-rate throttling.

Features

Add Flutter example app with Lottie demos

The \example\ directory now contains a complete Flutter application demonstrating the Lottie package. It includes a README with usage snippets for loading animations from assets and networks, Android platform configuration files (manifests, styles, MainActivity), and sample Lottie JSON assets (e.g., thumbs-up, fireworks, Android wave) to showcase animation rendering.

example · high confidence

Add code-style tooling for Dart import normalization

New scripts in the \tool/code\_style\ directory now automatically enforce consistent import styles across Dart projects. \fix\_absolute\_import.dart\ converts absolute \package:\ imports to relative paths, while \fix\_import\_order.dart\ sorts and formats import directives according to a defined order. These tools rely on new helper classes in \dart\_project.dart\ and \pubspec\_helper.dart\ to locate and analyze Dart files within the repository structure.

_tool/code\style · high confidence

Add model classes for Lottie animation data structures

The library now includes core model classes required to represent Lottie animation data, including \CubicCurveData\ for path operations, \DocumentData\ for text styling, \Font\ and \FontCharacter\ for typography, \KeyPath\ and \KeyPathElement\ for targeting animation content, and \Marker\ for defining named regions within the animation timeline.

lib/src/model · high confidence

Automated tooling for README generation and code style fixes

The \tool\ directory now includes scripts to automate documentation and code formatting tasks. A new \generate\_readme.dart\ utility processes README templates by extracting and formatting Dart code snippets from source files, while \prepare\_submit.dart\ orchestrates a workflow that applies absolute import fixes, corrects import ordering, and regenerates the READMEs, streamlining the pre-submission process.

tool · high confidence

Initial implementation of Lottie layer model and rendering logic

This change introduces the core layer model and rendering infrastructure for Lottie animations in Flutter. It adds the \lib/src/model/layer\ directory containing the base \BaseLayer\ class and specific implementations for Shape, Solid, Image, Text, Null, and Composition layers. This includes the logic for parsing layer types, handling transforms, masks, matte layers, and time remapping, as well as the initial drawing implementations for each layer type (e.g., drawing text with glyphs or fonts, rendering image assets, and applying solid colors).

lib/src/model/layer · high confidence

Initial implementation of Lottie model content classes

This change introduces the foundational model classes for Lottie animation content within the \lib/src/model/content\ directory. It adds support for rendering various shape types (Circle, Rectangle, Polystar), visual effects (Blur, DropShadow), and styling properties (Gradients, Strokes, Fills). Additionally, it includes models for layer blending, masks, merge paths, repeaters, and text range units, establishing the data structures required to parse and display complex Lottie animations.

lib/src/model/content · high confidence

Initial implementation of the animatable value model layer

This change introduces the core model classes for handling Lottie animation data within the \lib/src/model/animatable\ directory. It establishes the \AnimatableValue\ interface and a \BaseAnimatableValue\ base class, along with concrete implementations for various data types such as colors, doubles, integers, paths, points, scales, shapes, and text properties. These classes are responsible for storing keyframe data and creating the corresponding keyframe animations, forming the foundation for parsing and rendering animated properties in the library.

lib/src/model/animatable · high confidence

Initial implementation of the keyframe animation engine

This change introduces the core keyframe animation system for the library. It adds the \BaseKeyframeAnimation\ abstract class to manage progress, listeners, and caching, along with concrete implementations for specific data types including \ColorKeyframeAnimation\, \DoubleKeyframeAnimation\, \IntegerKeyframeAnimation\, \PathKeyframeAnimation\, \PointKeyframeAnimation\, \ShapeKeyframeAnimation\, \TextKeyframeAnimation\, and \TransformKeyframeAnimation\. It also includes specialized animations for visual effects like \DropShadowKeyframeAnimation\ and \MaskKeyframeAnimation\, as well as utility classes like \PathKeyframe\ and \SplitDimensionPathKeyframeAnimation\ to support complex interpolation and path-based movements.

lib/src/animation/keyframe · high confidence

Initial release of Lottie for Flutter (v3.6.1)

This entry marks the initial public release of the Lottie for Flutter package, porting the Lottie-android library to pure Dart. The library enables rendering Adobe After Effects animations (exported via Bodymovin) on Android, iOS, macOS, Linux, Windows, and Web. Key capabilities include loading animations from assets, networks, memory, and zip archives (including .lottie and .tgs formats), customizing animation controllers, and optimizing performance through a render cache and frame-rate throttling. The release also includes comprehensive documentation, examples, and configuration files for linting and publishing.

(repo-wide) · high confidence

Initial release of the Lottie Flutter library

This change introduces the core Lottie animation library for Flutter, providing widgets like Lottie and LottieBuilder to display animations from assets, files, network, or memory. It includes a rendering engine (RenderLottie) with support for frame-rate control, layer-level opacity, merge paths, and a render cache (raster and drawing commands) to optimize performance. The library also exposes runtime modification capabilities via LottieDelegates for text, images, and value properties, along with options for filter quality and alignment.

lib/src · high confidence

New shape rendering and content architecture for Lottie animations

The animation rendering engine in \lib/src/animation/content\ has been restructured with new classes to handle shape composition and drawing. This introduces support for complex visual effects including blur and drop shadows on fills and strokes, as well as gradient fills and strokes with caching for performance. The update also adds rendering capabilities for new shape types like Polystar (stars and polygons) and Merge Paths (union, subtract, intersect, etc.), while refining existing stroke and fill behaviors to better match After Effects specifications.

lib/src/animation/content · high confidence

New utility library for path manipulation, animation curves, and data processing

The \lib/src/utils\ directory has been populated with a comprehensive set of new utility classes and extensions to support core animation and rendering logic. This includes \dash\_path.dart\ for generating dashed stroke effects, \path\_interpolator.dart\ implementing cubic bezier curves as Flutter \Curve\ objects, and \gamma\_evaluator.dart\ for perceptually uniform color interpolation. Path handling is enhanced with \dash\_path.dart\ and \utils.dart\ (specifically \applyTrimPathIfNeeded\), which now correctly handles path trimming to prevent CanvasKit stack overflows on web. Additional utilities include \collection.dart\ for binary search operations, \characters.dart\ for string trimming, \misc.dart\ for shape data parsing and key-path resolution, and \mean\_calculator.dart\ for statistical tracking.

lib/src/utils · high confidence

Runtime animation value modification via LottieValueCallback

Users can now modify Lottie animation properties at runtime using the new \LottieValueCallback\ API. This change introduces a set of value classes in \lib/src/value\ that allow developers to intercept and adjust animation data as it plays. Specifically, \LottieFrameInfo\ provides context about the current frame and progress, while \LottieValueCallback\ allows attaching a callback to specific animation paths to override their values. Helper functions like \relativeDoubleValueCallback\, \relativeIntegerValueCallback\, and \relativeOffsetValueCallback\ are also provided to easily apply offsets to numeric and point-based animation values. Supporting classes such as \Keyframe\ and \DropShadow\ are included to handle the underlying animation data structures and visual effects.

lib/src/value · high confidence

Behavioural changes

Complete public API restructure for Lottie Flutter

The library's public interface has been completely overhauled, replacing the previous placeholder implementation with a comprehensive set of exports. Users can now access core animation classes like Lottie, LottieBuilder, and RawLottie, along with configuration and state management tools such as LottieOptions, LottieDelegates, and FrameRate. The update also exposes data models (LottieComposition, Marker), rendering utilities (RenderCache, DropShadow), and a full suite of asset providers for loading animations from assets, files, memory, and network sources.

lib · high confidence

Complete rewrite of the Lottie animation parser

The parser implementation in lib/src/parser has been entirely replaced with a new set of files (e.g., AnimatablePathValueParser, AnimatableTransformParser, ContentModelParser) that handle the parsing of Lottie JSON compositions. This change introduces support for new animation features including Blur and DropShadow effects, Polystar shapes, and layer blend modes, while also fixing existing behaviors such as gradient color stop interpolation, rounded rectangle rendering, and handling of RGB/RGBA color values in stickers.

lib/src/parser · high confidence

Introduce Moshi-based JSON parser for Lottie compositions

The Lottie composition parser now uses a new Moshi-based JSON reader implementation located in \lib/src/parser/moshi\. This change replaces the previous parsing mechanism with a custom \JsonUtf8Reader\ and supporting classes (\Buffer\, \JsonScope\, \charcode\) that read JSON tokens from byte buffers. This enables the parser to handle Lottie JSON data using a streaming token-based approach, which is required to support the new \List\<int\>\ input signature for \LottieComposition.fromBytes\ and improves compatibility with the underlying Android Lottie library's parsing logic.

lib/src/parser/moshi · high confidence

Introduce structured provider architecture with background loading and platform-specific file support

The library now uses a dedicated provider pattern in \lib/src/providers\ to load Lottie compositions from assets, files, memory, and network. This change introduces a \backgroundLoading\ option that offloads JSON parsing to a compute isolate, preventing UI jank during heavy loads. It also adds platform-aware file loading: \FileLottie\ works on native platforms via \dart:io\, while gracefully throwing on Web, and includes a new \LottieCache\ with LRU eviction to manage memory usage for loaded compositions.

lib/src/providers · high confidence

Test coverage

Expanded test coverage for Lottie rendering, caching, and dynamic properties

Added comprehensive test suites to the \test/\ directory, including golden tests for rendering, dynamic property overrides (text, gradients, paths, colors), frame-rate throttling, and render cache behavior. These tests verify that animations render correctly under various configurations, that dynamic delegates modify properties as expected, and that the raster cache correctly handles different source rectangles and alignments to prevent visual corruption.

test · high confidence

Dependencies

Upgrade to Dart 3.11 and Flutter 3.41 with dependency updates

The package now requires Dart SDK ^3.11.0 and Flutter \>=3.41.0, reflecting a significant platform upgrade. The dependency list has been refreshed: \archive\ is updated to ^4.0.0, \http\ to ^1.0.0, \path\ to ^1.8.0, and \vector\_math\ to ^2.1.0. Development dependencies \analyzer\, \dart\_style\, \flutter\_lints\, \pub\_semver\, and \yaml\ are now explicitly declared. The example app's \pubspec.yaml\ has been updated to match the new SDK constraints and includes additional assets and fonts.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 68.

Lenses

  • Code Health 85
  • Architecture 99
  • Maturity 55
  • Readiness 74
  • Security 74
  • Domain Modelling 100

Changes since last survey

  • 165 commits — 121 feature/other, 44 fixes

By area

  • (root) — 48 commits
  • lib/src — 39 commits
  • test/goldens — 20 commits
  • .github/workflows — 18 commits
  • example/test — 16 commits
  • example/lib — 6 commits
  • example/assets — 4 commits
  • example/android — 3 commits
  • example/ios — 3 commits
  • example/macos — 2 commits
  • test/golden — 2 commits
  • tool/publish — 2 commits
  • example/pubspec.lock — 1 commit
  • sample_app/assets — 1 commit

Notable commits

  • fix: Add latest feature/fixes from Lottie-Android (#209)
  • fix: Add newest bug fixes from lottie-android (#154)
  • fix: Add test and fix for onLoaded callback (#14)
  • fix: Apply latest fixes from Lottie-Android (#256)
  • fix: Bring some latest fixes (#307)
  • fix: Fill Performance Improvements and other fixes (#100)
  • fix: Fix Flutter web compilation error (#109)
  • fix: Fix Github Action to publish on pub when released on github (#9)
  • fix: Fix TextLayer opacity calculation (#285)
  • fix: Fix a bug with rounded rectangles (#36)
  • fix: Fix an assertion for null ShapeTrimPathType.type (#271)
  • fix: Fix bitwise comparaison on web (#274)
  • fix: Fix bounds calculation bug (#128)
  • fix: Fix bug with matrix.mapRect (#61)
  • fix: Fix bug with repeater (#29)
  • fix: Fix bugs & support .tgs & .lottie (#314)
  • fix: Fix bugs on building ios example (#311)
  • fix: Fix changelog
  • fix: Fix crash when path.computeMetrics returns empty list (#116)
  • fix: Fix expected int (#351)
  • …and 145 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

xvrh/lottie-flutter was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 7e6f335edca062124f392d3c779fdf8b52807246 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.