PackageTrack
Sign in Get early access

lottie

Render After Effects animations natively on Flutter. This package is a pure Dart implementation of a Lottie player.

3.5.1 1000K downloads/mo #29 most downloaded on pub.dev xvrh/lottie-flutter

What this package is like to depend on

Last release 1 months ago

08 Jul 2026

Release timing varies

gaps range from 2 weeks to 8 months

Nearly every release is documented

notes for 59 of 59 stable releases

Nothing withdrawn

no release was ever pulled

7 years old

68 releases · first in 2020

5 releases in the last 12 months

see the full history below

Release timeline

68 releases · Jan 2020 to Jul 2026
2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 68
  1. 3.5.1 08 Jul 2026
    Release notes
    • Fix cropped fits (e.g. BoxFit.cover) ignoring alignment and always cropping from the top-left
    • Fix the raster render cache serving the wrong crop when two animations shared a composition and size but differed in fit/alignment
    Open source →
    Release notes
    • Fix blank frames on pre-compositions using both time remapping and a time stretch
    • Fix cropped fits (e.g. BoxFit.cover) ignoring alignment and always cropping from the top-left
    • Fix the raster render cache serving the wrong crop when two animations shared a composition and size but differed in fit/alignment
    Open source →
  2. 3.5.0 07 Jul 2026
    Release notes
    • Throttle the auto-animation to the composition frame rate to reduce rebuilds
    Open source →
    Release notes
    • Throttle the auto-animation to the composition frame rate to reduce rebuilds
    Open source →
  3. 3.4.0 25 Jun 2026
    Release notes
    • Add text animator range selectors (color, stroke, stroke width, tracking and opacity over an animated index/percent range)
    • Add ValueDelegate.path to override a shape's outline at runtime
    • Experimental initial 3D layer support (X/Y rotation approximated as a 2D foreshortening)
    • Render strokes correctly under skew by transforming the canvas instead of scaling the stroke width
    • Only apply the parent alpha to matte layers
    • Fix rounded corners not animating when the shape itself is static
    • Fix a flash artifact on polygons with large strokes
    • Improve .lottie/.zip handling: skip manifest.json and normalize bundled image paths
    Open source →
    Release notes
    • Add text animator range selectors (color, stroke, stroke width, tracking and opacity over an animated index/percent range)
    • Add ValueDelegate.path to override a shape's outline at runtime
    • Experimental initial 3D layer support (X/Y rotation approximated as a 2D foreshortening)
    • Render strokes correctly under skew by transforming the canvas instead of scaling the stroke width
    • Only apply the parent alpha to matte layers
    • Fix rounded corners not animating when the shape itself is static
    • Fix a flash artifact on polygons with large strokes
    • Improve .lottie/.zip handling: skip manifest.json and normalize bundled image paths
    Open source →
  4. 3.3.3 10 Apr 2026
    Release notes
    • Apply the ShapeFill fill type consistently when drawing and computing bounds in FillContent
    Open source →
    Release notes
    • Apply the ShapeFill fill type consistently when drawing and computing bounds in FillContent
    Open source →
  5. 3.3.2 08 Sep 2025
    Release notes
    • Remove usages of deprecated methods in package:vector_math
    Open source →
    Release notes
    • Remove usages of deprecated methods in package:vector_math
    Open source →
  6. 3.3.1 10 Jan 2025
    Release notes
    • Update package:archive to >=4.0.0 constraint
    Open source →
    Release notes
    • Update package:archive to >=4.0.0 constraint
    Open source →
  7. 3.3.0 12 Dec 2024
    Release notes
    • Requires Flutter 3.27 and fix lints.
    • Add conditional imports to prevent importing dart:io on Web targets
    Open source →
    Release notes
    • Requires Flutter 3.27 and fix lints.
    • Add conditional imports to prevent importing dart:io on Web targets
    Open source →
  8. 3.2.0 08 Dec 2024
    Release notes
    • Apply Blend mode at layer level
    Open source →
    Release notes
    • Apply Blend mode at layer level
    Open source →
  9. 3.1.3 14 Oct 2024
    Release notes
    • Update package:archive dependency constraints
    Open source →
    Release notes
    • Update package:archive dependency constraints
    Open source →
  10. 3.1.2 17 May 2024
    Release notes
    • Fixes for some animations generated by lottiefiles.com
    Open source →
    Release notes
    • Fixes for some animations generated by lottiefiles.com
    Open source →
  11. 3.1.1 13 May 2024
    Release notes
    • Fix rounding-off error on progress calculation
    • Allow missing end values for integer animations
    Open source →
  12. 3.1.0 21 Feb 2024
    Release notes
    • Use package:http for Lottie.network. This allows to drop dependency on dart:html and be compatible with wasm.
    • Fix new lints
    Open source →
  13. 3.0.0 11 Jan 2024
    Release notes
    • Add renderCache parameter.
    Lottie.asset('assets/complex_animation.json',
      renderCache: RenderCache.raster,
    )
    

    Opt-in to a special render mode where the frames of the animation are lazily rendered and kept in a cache.
    Subsequent runs of the animation are cheaper to render.

    There are 2 kinds of caches:

    RenderCache.raster: keep the frame rasterized in the cache (as [dart:ui.Image]). Subsequent runs of the animation are very cheap for both the CPU and GPU but it takes a lot of memory.
    RenderCache.drawingCommands: keep the frame as a list of graphical operations ([dart:ui.Picture]). Subsequent runs of the animation are cheaper for the CPU but not for the GPU.

    • Allow to load Telegram Stickers (.tgs)
    Lottie.asset(
      'sticker.tgs',
      decoder: LottieComposition.decodeGZip,
    )
    
    • Expose a hook to customize how to decode zip archives. This is useful for dotlottie archives (.lottie) when we want to specify a specific .json file inside the archive
    Lottie.asset(
      'animation.lottie',
      decoder: customDecoder,
    );
    
    Future<LottieComposition?> customDecoder(List<int> bytes) {
      return LottieComposition.decodeZip(bytes, filePicker: (files) {
        return files.firstWhere((f) => f.name == 'animations/cat.json');
      });
    }
    
    • Add backgroundLoading parameter to Lottie.asset|network|file|memory.
      If backgroundLoading is true, the animation will be loaded in a background isolate.
      This is useful for large animations that can take a long time to parse and block the UI work.

    • Remove the name property from LottieComposition

    • imageProviderFactory is not used in .zip file by default anymore. To restore the old behaviour, use:

    Future<LottieComposition?> decoder(List<int> bytes) {
      return LottieComposition.decodeZip(bytes, imageProviderFactory: imageProviderFactory);
    }
    
    Lottie.asset('anim.json', decoder: decoder)
    
    • Disable gradient cache optimization when ValueDelegate.gradientColor is used
    • Use DefaultAssetBundle.of in AssetLottie before fallback to rootBundle
    • Add BuildContext optional parameter in LottieProvider.load
    • Fixed varying opacity stops across keyframes in the same gradient
    • Fixed rounded corners for non-closed curves
    • Implement auto-orient
    • Add support for layer blend mode
    • Require Flutter 3.16
    Open source →
  14. 3.0.0-alpha.4 22 Dec 2023 pre-release
    Release notes

    See the latest 3.0.0 release

    Open source →
  15. 3.0.0-alpha.3 25 Nov 2023 pre-release
    Release notes

    See the latest 3.0.0 release

    Open source →
  16. 3.0.0-alpha.2 22 Nov 2023 pre-release
    Release notes

    See the latest 3.0.0 release

    Open source →
  17. 3.0.0-alpha.1 15 Nov 2023 pre-release
    Release notes

    See the latest 3.0.0 release

    Open source →
  18. 2.7.0 20 Oct 2023
    Release notes
    • Support loading Fonts from a zip file
    • Fix a bug in Text with strokes
    • Fix gradient interpolation for opacity stops beyond the last color stop
    • Add color value callback to solid layer
    Open source →
  19. 2.6.0 08 Aug 2023
    Release notes
    • Accept List<int> instead of Uint8List in LottieComposition.fromBytes
    • Stroke line cap defaults to butt instead of square
    Open source →
  20. 2.5.0 17 Jul 2023
    Release notes
    • Add layer-level opacity option to LottieOptions
    • Fix TextLayer opacity calculation
    Open source →
  21. 2.4.0 02 Jun 2023
    Release notes
    • Require minimum Dart 3.0.0 and Flutter 3.10.0
    • Fix a parsing bug when the name property in RoundedCorner was null
    Open source →
  22. 2.3.2 06 Apr 2023
    Release notes
    Open source →
  23. 2.3.1 28 Mar 2023
    Release notes
    • Fix an assertion for null ShapeTrimPathType.type.
    Open source →
  24. 2.3.0 14 Mar 2023
    Release notes
    • Fixed a failed assertion (dirty: is not true) when calling setState inside onLoaded callback.
    • Update point text y offset
    • Makes static compositions not animate by default
    Open source →
  25. 2.2.0 10 Jan 2023
    Release notes

    Apply the latest fixes from Lottie-Android:

    • Overhaul text layout
    • Fix rounded corners modifying already rounded corners
    • Support box position in Document Data
    • Allow interpolating between gradients with different opacity stops
    • Add support for gradient opacity stops
    Open source →
  26. 2.1.0 14 Dec 2022
    Release notes
    • Improve the cache to ensure that there is not an empty frame each time we load an animation.
      The method AssetLottie('anim.json').load() returns a SynchronousFuture if it has been loaded previously.
    • Expose the LottieCache singleton. It allows to change the cache behaviour and clear the entries.
    void main() {
      Lottie.cache.maximumSize = 10;
      Lottie.cache.clear();
      Lottie.cache.evict(NetworkLottie('https://lottie.com/anim.json'));
    }
    
    Open source →
  27. 2.0.0 09 Nov 2022
    Release notes
    • Breaking change: the lottie widget will be smaller if it relies on the intrinsic size of the composition.

    Previously the lottie parser was automatically multiplying the size of the composition by window.devicePixelRatio. This was incorrect as it results in a widget of a different size depending on the pixel ratio of the monitor. Furthermore, it created some bugs when the property window.devicePixelRatio was not available immediately at the start of the app (on Android release builds).

    The code can be adapted to specify explicitly the size of the animation with width, height and fit properties.

    Scaffold(
      body: Center(
        child: Lottie.asset(
          'assets/LottieLogo1.json',
          height: 800,
          fit: BoxFit.contain,
        ),
      ),
    );
    
    Open source →
  28. 1.4.3 14 Sep 2022
    Release notes
    • Fixed some lints with Flutter 3.3.
    Open source →
  29. 1.4.2 25 Aug 2022
    Release notes
    • Use FilterQuality.low as default to draw image layers.
    Open source →
  30. 1.4.1 03 Aug 2022
    Release notes
    • Allow AlignmentGeometry for alignment.
    Open source →
  31. 1.4.0 27 Jul 2022
    Release notes
    • Added filterQuality property to control the performance vs quality trade-off to use when drawing images
    Open source →
  32. 1.3.0 14 Apr 2022
    Release notes
    • Added support for rounded corners on shapes and rects
    • Add support for text in dynamic properties (ValueDelegate)

    Example:

    Lottie.asset(
      'assets/DynamicText.json',
      delegates: LottieDelegates(values: [
        ValueDelegate.text(
          ['Text layer'], // The path to the text element to change
          value: 'The new text',
        ),
      ]),
    )
    
    • Improve stroke with offset
    • Add support for reversed polystar paths
    • Enforce order of operations to avoid rounding errors
    Open source →
  33. 1.2.2 14 Feb 2022
    Release notes
    • Internal maintenance: fix lints for Flutter 2.10
    Open source →
  34. 1.2.1 24 Sep 2021
    Release notes
    • Fix: Revert Cubic to PathInterpolator.cubic
    Open source →
  35. 1.2.0 19 Sep 2021
    Release notes
    • Add support for gaussian blurs.

    Example to blur some elements dynamically:

    Lottie.asset(
      'assets/AndroidWave.json',
      delegates: LottieDelegates(values: [
        ValueDelegate.blurRadius(
          ['**'], // The path to the element to blur
          value: 20,
        ),
      ]),
    )
    
    • Add support for drop shadows.

    Example to add a shadow dynamically:

    Lottie.asset(
      'assets/animation.json',
      delegates: LottieDelegates(values: [
        ValueDelegate.dropShadow(
          ['**'], // The path to the elements with shadow
          value: const DropShadow(
            color: Colors.blue,
            direction: 140,
            distance: 60,
            radius: 10,
          ),
        ),
      ]),
    )
    
    Open source →
  36. 1.1.0 08 Jul 2021
    Release notes
    • Add errorBuilder callback to provide an alternative widget in case an error occurs during loading.
    Lottie.network(
      'https://example.does.not.exist/lottie.json',
      errorBuilder: (context, exception, stackTrace) {
        return const Text('😢');
      },
    );
    
    • Add onWarning to be notified when a warning occurs during the animation parsing or painting. Previously the warnings where written in an internal logger.
      Lottie.asset('animation.json'
        onWarning: (warning) {
          _logger.info(warning);
        },
      );
      
    • Various bug fixes
    Open source →
  37. 1.0.1 08 Mar 2021
    Release notes
    • Implement RenderBox.computeDryLayout
    Open source →
  38. 1.0.0 24 Feb 2021
    Release notes
    • Migrate to null safety
    • Fix some rendering bugs
    • Add an image delegate to dynamically change images
    • Allow to use an imageProviderFactory with a zip file
    Open source →
  39. 0.8.0-nullsafety.4 22 Feb 2021 pre-release

    Nothing published for this version

  40. 0.8.0-nullsafety.3 08 Feb 2021 pre-release

    Nothing published for this version

  41. 0.8.0-nullsafety.2 06 Feb 2021 pre-release

    Nothing published for this version

  42. 0.8.0-nullsafety.1 06 Feb 2021 pre-release

    Nothing published for this version

  43. 0.8.0-nullsafety.0 23 Jan 2021 pre-release

    Nothing published for this version

  44. 0.7.0 23 Oct 2020
    Release notes
    • Performance improvement for complex animations.
    Open source →
  45. 0.7.0+1 23 Oct 2020
    Release notes
    • Fix Flutter Web compilation error
    Open source →
  46. 0.6.0 24 Aug 2020
    Release notes
    • Runs the animation at the frame rate specified in the json file (ie. An animation encoded with a 20 FPS will only be paint 20 times per seconds even though the AnimationController will invalidate the widget 60 times per seconds).
      A new property frameRate allows to opt-out this behavior and have the widget to repaint at the device frame rate (FrameRate.max).
    • Automatically add a RepaintBoundary around the widget. Since Lottie animations are generally complex to paint, a RepaintBoundary will separate the animation with the rest of the app and improve performance. A new property addRepaintBoundary allows to opt-out this behavior.
    • Fix a bug where we would call markNeedPaint when the animation was not changing. This removes unnecessary paints in animations with static periods.
    Open source →
  47. 0.5.1 26 Jul 2020
    Release notes
    • Remove direct dependencies on dart:io to support Flutter Web
    Open source →
  48. 0.5.0 26 Jul 2020
    Release notes
    • Support loading animation from network in a web app
    • Fix a couple of bugs with the web dev compiler
    Open source →
  49. 0.4.1 08 Jul 2020
    Release notes
    • Support color value stored as RGB, not RGBA
    Open source →
  50. 0.4.0 01 Jun 2020
    Release notes
    • Disable "Merge paths" by default and provide an option to enable them.
      This is the same behavior as in Lottie-android.
      Merge paths currently don't work if the the operand shape is entirely contained within the first shape. If you need to cut out one shape from another shape, use an even-odd fill type instead of using merge paths.

    Merge paths can be enabled with:

    Lottie.asset('file.json', options: LottieOptions(enableMergePaths: true));
    
    Open source →
  51. 0.4.0+1 10 Jun 2020
    Release notes
    • Support latest version of the characters package
    Open source →
  52. 0.3.6 19 May 2020
    Release notes
    • Export the Marker class
    Open source →
  53. 0.3.5 18 May 2020
    Release notes
    • Fix a bug with a wrongly clipped rectangle.
    Open source →
  54. 0.3.4 15 May 2020
    Release notes
    • Fix a bug with dashed path
    Open source →
  55. 0.3.3 03 Apr 2020
    Release notes
    • Fix a bug with rounded rectangle shape
    Open source →
  56. 0.3.2 16 Mar 2020
    Release notes
    • Fix a bug with "repeater" content
    Open source →
  57. 0.3.1 12 Mar 2020
    Release notes
    • Support dashed path
    Open source →
  58. 0.3.0 05 Mar 2020
    Release notes
    • Add LottieDelegates a group of options to customize the lottie animation at runtime. ie: Dynamically modify color, position, size, text... of every elements of the animation.
    • Correctly display Linear and Radial Gradients
    • Integrate latest changes from Lottie-android
    Open source →
  59. 0.3.0+1 05 Mar 2020
    Release notes
    • Specify a version range for the dependency on characters.
    Open source →
  60. 0.2.2 21 Feb 2020
    Release notes
    • Add a [repeat] parameter to specify if the automatic animation should loop.
    • Add the [animate], [reverse], [repeat] properties on LottieBuilder
    • Fix bug with onLoaded callback when the LottieProvider is changed
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive