The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
**Lottie 4.3.0** adds many new features, including:
- Official support for SwiftUI!
- A public Core Animation `CALayer` subclass
- Support for reduced motion
- Support for drop shadow layer effects
- Support for visionOS
You can learn more about Lottie 4.3.0 in this announcement: **[Lottie 4.3.0 now available, with official support for SwiftUI #2189](https://github.com/airbnb/lottie-ios/discussions/2189)**
## Lottie 4.3.2
Lottie 4.3.2 redesigns the `LottiePlaybackMode` playback APIs that were introduced in Lottie 4.3.0.
### Before
```swift
// Loop from 0.5 to 1.0
LottieView(animation: myAnimation)
.play(.fromProgress(0.5, toProgress: 1.0, loopMode: .loop))
// Pause at the halfway point of the animation
LottieView(animation: myAnimation)
.play(.progress(0.5))
```
### After
```swift
// Loop from 0.5 to 1.0
LottieView(animation: myAnimation)
.playing(.fromProgress(0.5, toProgress: 1.0, loopMode: .loop))
// Pause at the halfway point of the animation
LottieView(animation: myAnimation)
.paused(at: .progress(0.5))
```
## New Features in Lottie 4.3.0
* Add SwiftUI `LottieView`, which wraps UIKit `LottieAnimationView`
* Add SwiftUI `LottieSwitch`, which wraps UIKit `AnimatedSwitch` (https://github.com/airbnb/lottie-ios/pull/2138)
* Add SwiftUI `LottieButton`, which wraps `AnimatedButton` (https://github.com/airbnb/lottie-ios/pull/2139)
* `AnimatedSwitch` and `AnimatedButton` now support macOS (https://github.com/airbnb/lottie-ios/pull/2138, https://github.com/airbnb/lottie-ios/pull/2139)
* Add `LottieAnimationLayer`, a Core Animation `CALayer` subclass for playing Lottie animations (https://github.com/airbnb/lottie-ios/pull/2073)
* Add support for rendering drop shadow layer effects (https://github.com/airbnb/lottie-ios/pull/2142)
* Add API for playing multiple markers sequentially (https://github.com/airbnb/lottie-ios/pull/2084)
* Play "reduced motion" marker if `UIAccessibility.isReduceMotionEnabled` is true (https://github.com/airbnb/lottie-ios/pull/2110)
* Update text provider API to use full `AnimationKeypath` values (https://github.com/airbnb/lottie-ios/pull/2183)
* Add support for visionOS (https://github.com/airbnb/lottie-ios/pull/2152)
* Drop support for Swift 5.5 (https://github.com/airbnb/lottie-ios/pull/2152)
* Add contents gravity configuration to `AnimationImageProvider` (https://github.com/airbnb/lottie-ios/pull/2177)
* Add support for customizing stroke width values using `FloatValueProvider` (https://github.com/airbnb/lottie-ios/pull/2179)
* Adopt `Sendable` to support using Lottie with strict concurrency enabled (https://github.com/airbnb/lottie-ios/pull/2126)
* Add `LottiePlaybackMode` to support declarative playback configuration (https://github.com/airbnb/lottie-ios/pull/2128)
* Add option make main thread rendering engine force display update on every frame (https://github.com/airbnb/lottie-ios/pull/2168)
* Add a option to prevent caching images from `AnimationImageProvider` (https://github.com/airbnb/lottie-ios/pull/2171)
* Add support for customizing gradient values using `GradientValueProvider` (https://github.com/airbnb/lottie-ios/pull/2182)
* Added additional support for multiple animations in `DotLottieFile` (https://github.com/airbnb/lottie-ios/pull/2074)
* Add helper method to initialize `DotLottieFile` with data (https://github.com/airbnb/lottie-ios/pull/2090)
## Bug fixes
* Remove `.../ZipFoundation/README.md` from targets and `*.md*` files from podspec (https://github.com/airbnb/lottie-ios/pull/2057)*
* Fix issue where layers with negative X scale values could be pixelated (https://github.com/airbnb/lottie-ios/pull/2067)
* Fix warnings when building with Swift 5.9 (https://github.com/airbnb/lottie-ios/pull/2072)
* Restructure `ValueProviderStore` to not accumulate multiple values for the same key (https://github.com/airbnb/lottie-ios/pull/2082)
* Disable bitcode when building XCFramework (https://github.com/airbnb/lottie-ios/pull/2121)
* Fix unhandled file warning when building with SPM ([https://github.com/airbnb/lottie-ios/pull/213](https://github.com/airbnb/lottie-ios/pull/2132))
* Fix support for customizing color of `SolidLayer` using `ColorValueProvider` (https://github.com/airbnb/lottie-ios/pull/2154)
* Fix issue where shape items could be unexpectedly ignored (https://github.com/airbnb/lottie-ios/pull/2156)
* Fix issue where skew keyframes would unexpectedly not animate (https://github.com/airbnb/lottie-ios/pull/2157)
* Fix issue where value providers could be ignored when falling back to main thread rendering engine (https://github.com/airbnb/lottie-ios/pull/2164)
Thanks to everyone who contributed to this release!
**Lottie 4.3.0** adds many new features, including:
- Official support for SwiftUI!
- A public Core Animation `CALayer` subclass
- Support for reduced motion
- Support for drop shadow layer effects
- Support for visionOS
You can learn more about Lottie 4.3.0 in this announcement: **[Lottie 4.3.0 now available, with official support for SwiftUI #2189](https://github.com/airbnb/lottie-ios/discussions/2189)**
Lottie 4.3.1 fixes a small regression introduced by 4.3.0: https://github.com/airbnb/lottie-ios/issues/2193
## New Features
* Add SwiftUI `LottieView`, which wraps UIKit `LottieAnimationView`
* Add SwiftUI `LottieSwitch`, which wraps UIKit `AnimatedSwitch` (https://github.com/airbnb/lottie-ios/pull/2138)
* Add SwiftUI `LottieButton`, which wraps `AnimatedButton` (https://github.com/airbnb/lottie-ios/pull/2139)
* `AnimatedSwitch` and `AnimatedButton` now support macOS (https://github.com/airbnb/lottie-ios/pull/2138, https://github.com/airbnb/lottie-ios/pull/2139)
* Add `LottieAnimationLayer`, a Core Animation `CALayer` subclass for playing Lottie animations (https://github.com/airbnb/lottie-ios/pull/2073)
* Add support for rendering drop shadow layer effects (https://github.com/airbnb/lottie-ios/pull/2142)
* Add API for playing multiple markers sequentially (https://github.com/airbnb/lottie-ios/pull/2084)
* Play "reduced motion" marker if `UIAccessibility.isReduceMotionEnabled` is true (https://github.com/airbnb/lottie-ios/pull/2110)
* Update text provider API to use full `AnimationKeypath` values (https://github.com/airbnb/lottie-ios/pull/2183)
* Add support for visionOS (https://github.com/airbnb/lottie-ios/pull/2152)
* Drop support for Swift 5.5 (https://github.com/airbnb/lottie-ios/pull/2152)
* Add contents gravity configuration to `AnimationImageProvider` (https://github.com/airbnb/lottie-ios/pull/2177)
* Add support for customizing stroke width values using `FloatValueProvider` (https://github.com/airbnb/lottie-ios/pull/2179)
* Adopt `Sendable` to support using Lottie with strict concurrency enabled (https://github.com/airbnb/lottie-ios/pull/2126)
* Add `LottiePlaybackMode` to support declarative playback configuration (https://github.com/airbnb/lottie-ios/pull/2128)
* Add option make main thread rendering engine force display update on every frame (https://github.com/airbnb/lottie-ios/pull/2168)
* Add a option to prevent caching images from `AnimationImageProvider` (https://github.com/airbnb/lottie-ios/pull/2171)
* Add support for customizing gradient values using `GradientValueProvider` (https://github.com/airbnb/lottie-ios/pull/2182)
* Added additional support for multiple animations in `DotLottieFile` (https://github.com/airbnb/lottie-ios/pull/2074)
* Add helper method to initialize `DotLottieFile` with data (https://github.com/airbnb/lottie-ios/pull/2090)
## Bug fixes
* Remove `.../ZipFoundation/README.md` from targets and `*.md*` files from podspec (https://github.com/airbnb/lottie-ios/pull/2057)*
* Fix issue where layers with negative X scale values could be pixelated (https://github.com/airbnb/lottie-ios/pull/2067)
* Fix warnings when building with Swift 5.9 (https://github.com/airbnb/lottie-ios/pull/2072)
* Restructure `ValueProviderStore` to not accumulate multiple values for the same key (https://github.com/airbnb/lottie-ios/pull/2082)
* Disable bitcode when building XCFramework (https://github.com/airbnb/lottie-ios/pull/2121)
* Fix unhandled file warning when building with SPM ([https://github.com/airbnb/lottie-ios/pull/213](https://github.com/airbnb/lottie-ios/pull/2132))
* Fix support for customizing color of `SolidLayer` using `ColorValueProvider` (https://github.com/airbnb/lottie-ios/pull/2154)
* Fix issue where shape items could be unexpectedly ignored (https://github.com/airbnb/lottie-ios/pull/2156)
* Fix issue where skew keyframes would unexpectedly not animate (https://github.com/airbnb/lottie-ios/pull/2157)
* Fix issue where value providers could be ignored when falling back to main thread rendering engine (https://github.com/airbnb/lottie-ios/pull/2164)
Thanks to everyone who contributed to this release!
**Lottie 4.3.0** adds many new features, including:
- Official support for SwiftUI!
- A public Core Animation `CALayer` subclass
- Support for reduced motion
- Support for drop shadow layer effects
- Support for visionOS
You can learn more about Lottie 4.3.0 in this announcement: **[Lottie 4.3.0 now available, with official support for SwiftUI #2189](https://github.com/airbnb/lottie-ios/discussions/2189)**
## New Features
* Add SwiftUI `LottieView`, which wraps UIKit `LottieAnimationView`
* Add SwiftUI `LottieSwitch`, which wraps UIKit `AnimatedSwitch` (https://github.com/airbnb/lottie-ios/pull/2138)
* Add SwiftUI `LottieButton`, which wraps `AnimatedButton` (https://github.com/airbnb/lottie-ios/pull/2139)
* `AnimatedSwitch` and `AnimatedButton` now support macOS (https://github.com/airbnb/lottie-ios/pull/2138, https://github.com/airbnb/lottie-ios/pull/2139)
* Add `LottieAnimationLayer`, a Core Animation `CALayer` subclass for playing Lottie animations (https://github.com/airbnb/lottie-ios/pull/2073)
* Add support for rendering drop shadow layer effects (https://github.com/airbnb/lottie-ios/pull/2142)
* Add API for playing multiple markers sequentially (https://github.com/airbnb/lottie-ios/pull/2084)
* Play "reduced motion" marker if `UIAccessibility.isReduceMotionEnabled` is true (https://github.com/airbnb/lottie-ios/pull/2110)
* Update text provider API to use full `AnimationKeypath` values (https://github.com/airbnb/lottie-ios/pull/2183)
* Add support for visionOS (https://github.com/airbnb/lottie-ios/pull/2152)
* Drop support for Swift 5.5 (https://github.com/airbnb/lottie-ios/pull/2152)
* Add contents gravity configuration to `AnimationImageProvider` (https://github.com/airbnb/lottie-ios/pull/2177)
* Add support for customizing stroke width values using `FloatValueProvider` (https://github.com/airbnb/lottie-ios/pull/2179)
* Adopt `Sendable` to support using Lottie with strict concurrency enabled (https://github.com/airbnb/lottie-ios/pull/2126)
* Add `LottiePlaybackMode` to support declarative playback configuration (https://github.com/airbnb/lottie-ios/pull/2128)
* Add option make main thread rendering engine force display update on every frame (https://github.com/airbnb/lottie-ios/pull/2168)
* Add a option to prevent caching images from `AnimationImageProvider` (https://github.com/airbnb/lottie-ios/pull/2171)
* Add support for customizing gradient values using `GradientValueProvider` (https://github.com/airbnb/lottie-ios/pull/2182)
* Added additional support for multiple animations in `DotLottieFile` (https://github.com/airbnb/lottie-ios/pull/2074)
* Add helper method to initialize `DotLottieFile` with data (https://github.com/airbnb/lottie-ios/pull/2090)
## Bug fixes
* Remove `.../ZipFoundation/README.md` from targets and `*.md*` files from podspec (https://github.com/airbnb/lottie-ios/pull/2057)*
* Fix issue where layers with negative X scale values could be pixelated (https://github.com/airbnb/lottie-ios/pull/2067)
* Fix warnings when building with Swift 5.9 (https://github.com/airbnb/lottie-ios/pull/2072)
* Restructure `ValueProviderStore` to not accumulate multiple values for the same key (https://github.com/airbnb/lottie-ios/pull/2082)
* Disable bitcode when building XCFramework (https://github.com/airbnb/lottie-ios/pull/2121)
* Fix unhandled file warning when building with SPM ([https://github.com/airbnb/lottie-ios/pull/213](https://github.com/airbnb/lottie-ios/pull/2132))
* Fix support for customizing color of `SolidLayer` using `ColorValueProvider` (https://github.com/airbnb/lottie-ios/pull/2154)
* Fix issue where shape items could be unexpectedly ignored (https://github.com/airbnb/lottie-ios/pull/2156)
* Fix issue where skew keyframes would unexpectedly not animate (https://github.com/airbnb/lottie-ios/pull/2157)
* Fix issue where value providers could be ignored when falling back to main thread rendering engine (https://github.com/airbnb/lottie-ios/pull/2164)
Thanks to everyone who contributed to this release!
> **Note**
> Starting in Lottie 4.0, the Core Animation rendering engine is now enabled by default.
> Learn more about this change: **[Announcing Lottie 4.0 for iOS](https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54)** on the Airbnb Tech Blog
## What's Changed
* Added support for Opacity, Position, Scale, and Rotation value providers to Core Animation rendering engine (https://github.com/airbnb/lottie-ios/pull/2047)
* Updated minimum macOS version to 10.11 (https://github.com/airbnb/lottie-ios/pull/2050)
* Fixed issue where rounded corners algorithm would return incorrect path for shapes without any rounded corners (#1964)
* Improved dotLottie error handling (https://github.com/airbnb/lottie-ios/pull/1969)
* Added support for loading DotLottieFile by name and filename synchronously (https://github.com/airbnb/lottie-ios/pull/1968)
* Updated ZIPFoundation to 0.9.16 to resolve `dataCorrupted` errors (https://github.com/airbnb/lottie-ios/pull/1978)
* Fixed issue where `**` wildcard incorrectly required matching at least one path component (https://github.com/airbnb/lottie-ios/pull/1988)
* Fixed issue where completion handler could be called unexpectedly when setting up animation (https://github.com/airbnb/lottie-ios/pull/1994)
* Added `LottieAnimationView.allHierarchyKeypaths()` to get list of animation keypaths at runtime (https://github.com/airbnb/lottie-ios/pull/2004)
* Added a warning when playing animation that uses unsupported After Effects expressions (https://github.com/airbnb/lottie-ios/pull/2006)
* Added `LottieAnimationView.maskAnimationToBounds` configuration option (https://github.com/airbnb/lottie-ios/pull/2008)
* Trim whitespaces and newlines before decoding base 64 string to image (https://github.com/airbnb/lottie-ios/pull/2016)
* Added support for configuring `LottieBackgroundBehavior` to Objective-C `CompatibleAnimationView` (https://github.com/airbnb/lottie-ios/pull/2027)
* Fixed issue where Trim could be applied to too many shape items (https://github.com/airbnb/lottie-ios/pull/2041)
* Set animationLayer to nil when removing oldAnimation (https://github.com/airbnb/lottie-ios/pull/2035)
* Fixed issue where Trim strokeStart / strokeEnd could be rendered in incorrect order (https://github.com/airbnb/lottie-ios/pull/2049)
* Fixed issue where calling `setValueProvider` would reset animation progress (https://github.com/airbnb/lottie-ios/pull/2052)
* Fixed issue where trim offset could be calculated incorrectly (https://github.com/airbnb/lottie-ios/pull/2053)
**Full Changelog**: https://github.com/airbnb/lottie-ios/compare/4.1.3...4.2.0
> **Note**
> Starting in Lottie 4.0, the Core Animation rendering engine is now enabled by default.
> Learn more about this change: **[Announcing Lottie 4.0 for iOS](https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54)** on the Airbnb Tech Blog
## What's Changed
* Add support for 3D rotations on X and Y axis (https://github.com/airbnb/lottie-ios/pull/1930)
* Update color parsing to ignore alpha values for consistency with other platforms (https://github.com/airbnb/lottie-ios/pull/1934)
* Allow subclassing `LottieAnimationView` (https://github.com/airbnb/lottie-ios/pull/1937)
* Expose `AnimationTextProvider` in objc wrapper (https://github.com/airbnb/lottie-ios/pull/1944)
* Add dispatch queue parameter to dotLottie loading methods (https://github.com/airbnb/lottie-ios/pull/1956)
* Fix macOS build issues for apps using `Lottie.xcframework` / `lottie-spm` (https://github.com/airbnb/lottie-ios/pull/1960)
> **Note**
> Starting in Lottie 4.0, the Core Animation rendering engine is now enabled by default.
> Learn more about this change: **[Announcing Lottie 4.0 for iOS](https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54)** on the Airbnb Tech Blog
4.1.2 fixes an issue where the [lottie-spm](https://github.com/airbnb/lottie-spm) package would fail to build in some environments: https://github.com/airbnb/lottie-spm/pull/5#issuecomment-1398991609, https://github.com/airbnb/lottie-ios/issues/1926#issuecomment-1398866563
## 4.1.0 release notes
We've added a new way to integrate Lottie into your project using Swift Package Manager. We now provide a separate [lottie-spm](https://github.com/airbnb/lottie-spm) repo that is much smaller than the main lottie-ios repo (~500kb instead of ~300mb). Learn more about this change [here](https://github.com/airbnb/lottie-ios#swift-package-manager).
### Improvements and bug fixes
* Made DotLottieAnimation attributes optional to simplify Manifest file (https://github.com/airbnb/lottie-ios/pull/1844)
* Fix heap buffer overflow in CGColor+RGB extensions (https://github.com/airbnb/lottie-ios/pull/1858)
* Add support for display P3 color space (https://github.com/airbnb/lottie-ios/pull/1857)
* Add some missing utility to CompatibleAnimationView (https://github.com/airbnb/lottie-ios/pull/1881)
* Fix issue where ShapeTransform could incorrectly affect stroke width (https://github.com/airbnb/lottie-ios/pull/1872)
* Fix issue where empty trim item would take precedence over non-empty trim item (https://github.com/airbnb/lottie-ios/pull/1875)
* Fix issue where some top-level shape items would be silently ignored (https://github.com/airbnb/lottie-ios/pull/1874)
* Fix frame setting issue for CompatibleAnimationView (https://github.com/airbnb/lottie-ios/pull/1878)
* Gradient Fill Layer: Support strokes (https://github.com/airbnb/lottie-ios/pull/1818)
* Change veryLargeRect size to fix issue with masks (https://github.com/airbnb/lottie-ios/pull/1884)
* Fix issue where Fill following other Fill would be silently ignored (https://github.com/airbnb/lottie-ios/pull/1888)
* Fix issue where negative `scale.x` values didn't render correctly on iOS 14 (https://github.com/airbnb/lottie-ios/pull/1894)
* Fix issue where `LottieAnimationView.currentFrame` would be incorrect after playing animation with `LottieLoopMode.playOnce` (https://github.com/airbnb/lottie-ios/pull/1897)
* Fix issue where shape items could be applied in incorrect order (https://github.com/airbnb/lottie-ios/pull/1899)
* Fix issue where stroke and fill could be rendered in incorrect order (https://github.com/airbnb/lottie-ios/pull/1903)
* Fix issue where `play(fromProgress: 1, toProgress: 0)` animation would not actually play (https://github.com/airbnb/lottie-ios/pull/1908)
* Add support for skew animations (https://github.com/airbnb/lottie-ios/pull/1917)
> **Note**
> Starting in Lottie 4.0, the Core Animation rendering engine is now enabled by default.
> Learn more about this change: **[Announcing Lottie 4.0 for iOS](https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54)** on the Airbnb Tech Blog
4.1.1 fixes an issue where the [lottie-spm](https://github.com/airbnb/lottie-spm) package could not be embedded into iOS app builds (#1925), which could cause apps to crash (#1926).
## 4.1.0 release notes
We've added a new way to integrate Lottie into your project using Swift Package Manager. We now provide a separate [lottie-spm](https://github.com/airbnb/lottie-spm) repo that is much smaller than the main lottie-ios repo (~500kb instead of ~300mb). Learn more about this change [here](https://github.com/airbnb/lottie-ios#swift-package-manager).
### Improvements and bug fixes
* Made DotLottieAnimation attributes optional to simplify Manifest file (https://github.com/airbnb/lottie-ios/pull/1844)
* Fix heap buffer overflow in CGColor+RGB extensions (https://github.com/airbnb/lottie-ios/pull/1858)
* Add support for display P3 color space (https://github.com/airbnb/lottie-ios/pull/1857)
* Add some missing utility to CompatibleAnimationView (https://github.com/airbnb/lottie-ios/pull/1881)
* Fix issue where ShapeTransform could incorrectly affect stroke width (https://github.com/airbnb/lottie-ios/pull/1872)
* Fix issue where empty trim item would take precedence over non-empty trim item (https://github.com/airbnb/lottie-ios/pull/1875)
* Fix issue where some top-level shape items would be silently ignored (https://github.com/airbnb/lottie-ios/pull/1874)
* Fix frame setting issue for CompatibleAnimationView (https://github.com/airbnb/lottie-ios/pull/1878)
* Gradient Fill Layer: Support strokes (https://github.com/airbnb/lottie-ios/pull/1818)
* Change veryLargeRect size to fix issue with masks (https://github.com/airbnb/lottie-ios/pull/1884)
* Fix issue where Fill following other Fill would be silently ignored (https://github.com/airbnb/lottie-ios/pull/1888)
* Fix issue where negative `scale.x` values didn't render correctly on iOS 14 (https://github.com/airbnb/lottie-ios/pull/1894)
* Fix issue where `LottieAnimationView.currentFrame` would be incorrect after playing animation with `LottieLoopMode.playOnce` (https://github.com/airbnb/lottie-ios/pull/1897)
* Fix issue where shape items could be applied in incorrect order (https://github.com/airbnb/lottie-ios/pull/1899)
* Fix issue where stroke and fill could be rendered in incorrect order (https://github.com/airbnb/lottie-ios/pull/1903)
* Fix issue where `play(fromProgress: 1, toProgress: 0)` animation would not actually play (https://github.com/airbnb/lottie-ios/pull/1908)
* Add support for skew animations (https://github.com/airbnb/lottie-ios/pull/1917)
> **Note**
> Starting in Lottie 4.0, the Core Animation rendering engine is now enabled by default.
> Learn more about this change: **[Announcing Lottie 4.0 for iOS](https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54)** on the Airbnb Tech Blog
We've added a new way to integrate Lottie into your project using Swift Package Manager. We now provide a separate [lottie-spm](https://github.com/airbnb/lottie-spm) repo that is much smaller than the main lottie-ios repo (~500kb instead of ~300mb). Learn more about this change [here](https://github.com/airbnb/lottie-ios#swift-package-manager).
### Improvements and bug fixes
* Made DotLottieAnimation attributes optional to simplify Manifest file (https://github.com/airbnb/lottie-ios/pull/1844)
* Fix heap buffer overflow in CGColor+RGB extensions (https://github.com/airbnb/lottie-ios/pull/1858)
* Add support for display P3 color space (https://github.com/airbnb/lottie-ios/pull/1857)
* Add some missing utility to CompatibleAnimationView (https://github.com/airbnb/lottie-ios/pull/1881)
* Fix issue where ShapeTransform could incorrectly affect stroke width (https://github.com/airbnb/lottie-ios/pull/1872)
* Fix issue where empty trim item would take precedence over non-empty trim item (https://github.com/airbnb/lottie-ios/pull/1875)
* Fix issue where some top-level shape items would be silently ignored (https://github.com/airbnb/lottie-ios/pull/1874)
* Fix frame setting issue for CompatibleAnimationView (https://github.com/airbnb/lottie-ios/pull/1878)
* Gradient Fill Layer: Support strokes (https://github.com/airbnb/lottie-ios/pull/1818)
* Change veryLargeRect size to fix issue with masks (https://github.com/airbnb/lottie-ios/pull/1884)
* Fix issue where Fill following other Fill would be silently ignored (https://github.com/airbnb/lottie-ios/pull/1888)
* Fix issue where negative `scale.x` values didn't render correctly on iOS 14 (https://github.com/airbnb/lottie-ios/pull/1894)
* Fix issue where `LottieAnimationView.currentFrame` would be incorrect after playing animation with `LottieLoopMode.playOnce` (https://github.com/airbnb/lottie-ios/pull/1897)
* Fix issue where shape items could be applied in incorrect order (https://github.com/airbnb/lottie-ios/pull/1899)
* Fix issue where stroke and fill could be rendered in incorrect order (https://github.com/airbnb/lottie-ios/pull/1903)
* Fix issue where `play(fromProgress: 1, toProgress: 0)` animation would not actually play (https://github.com/airbnb/lottie-ios/pull/1908)
* Add support for skew animations (https://github.com/airbnb/lottie-ios/pull/1917)
4.0.1 fixes an issue in 4.0.0 where the install could fail due to issues with Git LFS: #1830, #1834.
We now publish `xframework` binaries as a part of our release process: https://github.com/airbnb/lottie-ios/discussions/1807#discussioncomment-4346438
## Major changes in Lottie 4.0
Learn more about this release: **[Announcing Lottie 4.0 for iOS](https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54)** on the Airbnb Tech Blog
* The new Core Animation rendering engine ([first introduced in Lottie 3.4.0](https://github.com/airbnb/lottie-ios/discussions/1627)) is now enabled by default for supported animations.
* Specifically, `LottieConfiguration.shared.renderingEngine` now defaults to `.automatic` instead of `.mainThread`. Animations that use features which are not supported by the Core Animation rendering engine will automatically fall back to using the original Main Thread rendering engine.
* When using the Core Animation rendering engine, Lottie animations now always animate smoothly regardless of the amount of work being done on the app’s main thread. This **significantly improves animation performance** while also eliminating CPU overhead.
* If you encounter any compatibility issues when using `RenderingEngineOption.automatic`, please file an issue with a copy of your animation json.
* `DecodingStrategy.dictionaryBased` is now enabled by default
* The new dictionary-based decoding implementation is 2x faster than the previous `Codable` decoding implementation
* If you encounter any compatibility issues with this new decoding implementation, please file an issue with a copy of your animation json.
* Backwards compatibility typealiases for `Animation`, `AnimationView`, `Color`, `Vector1D`, `Vector2D`, and `Vector3D`, which were introduced in [Lottie 3.5.0](https://github.com/airbnb/lottie-ios/releases), have been removed to resolve conflicts with types in Apple frameworks. These types are now named `LottieAnimation`, `LottieAnimationView`, `LottieColor`, `LottieVector1D`, `LottieVector2D`, and `LottieVector3D`.
* The default `LottieBackgroundBehavior` used by `LottieAnimationView` is now `.pauseAndRestore` instead of `pause`.
* Lottie for iOS now supports the [dotLottie file format](https://dotlottie.io/).
* The library's minimum-supported Swift version is now Swift 5.5.
XCFramework checksum: b6d8b0b81975d91965b8bb00cffb0eae4b3d94538b6950a90bc1366afd5d4239
Learn more about this release: **[Announcing Lottie 4.0 for iOS](https://medium.com/airbnb-engineering/announcing-lottie-4-0-for-ios-d4d226862a54)** on the Airbnb Tech Blog
## Major changes
* The new Core Animation rendering engine ([first introduced in Lottie 3.4.0](https://github.com/airbnb/lottie-ios/discussions/1627)) is now enabled by default for supported animations.
* Specifically, `LottieConfiguration.shared.renderingEngine` now defaults to `.automatic` instead of `.mainThread`. Animations that use features which are not supported by the Core Animation rendering engine will automatically fall back to using the original Main Thread rendering engine.
* When using the Core Animation rendering engine, Lottie animations now always animate smoothly regardless of the amount of work being done on the app’s main thread. This **significantly improves animation performance** while also eliminating CPU overhead.
* If you encounter any compatibility issues when using `RenderingEngineOption.automatic`, please file an issue with a copy of your animation json.
* `DecodingStrategy.dictionaryBased` is now enabled by default
* The new dictionary-based decoding implementation is 2x faster than the previous `Codable` decoding implementation
* If you encounter any compatibility issues with this new decoding implementation, please file an issue with a copy of your animation json.
* Backwards compatibility typealiases for `Animation`, `AnimationView`, `Color`, `Vector1D`, `Vector2D`, and `Vector3D`, which were introduced in [Lottie 3.5.0](https://github.com/airbnb/lottie-ios/releases), have been removed to resolve conflicts with types in Apple frameworks. These types are now named `LottieAnimation`, `LottieAnimationView`, `LottieColor`, `LottieVector1D`, `LottieVector2D`, and `LottieVector3D`.
* The default `LottieBackgroundBehavior` used by `LottieAnimationView` is now `.pauseAndRestore` instead of `pause`.
* Lottie for iOS now supports the [dotLottie file format](https://dotlottie.io/).
* The library's minimum-supported Swift version is now Swift 5.5.
## Full changelog
* Use `RenderingEngineOption.automatic` by default by @calda in https://github.com/airbnb/lottie-ios/pull/1764
* Fix issue where inverted mask layer was clipped incorrectly by @calda in https://github.com/airbnb/lottie-ios/pull/1763
* Bump to 4.0.0, remove backwards compatibility typealiases by @calda in https://github.com/airbnb/lottie-ios/pull/1768
* Update `LottieBackgroundBehavior.default` from `.pause` to `.pauseAndRestore` for Main Thread rendering engine by @calda in https://github.com/airbnb/lottie-ios/pull/1770
* Adds ability to not play the frame of the end marker (#1758) by @lennartstolz in https://github.com/airbnb/lottie-ios/pull/1772
* Change LottieAnimationHelpers default animation cache to LRUAnimationCache.shared (#1773) by @pejato in https://github.com/airbnb/lottie-ios/pull/1778
* Update LottieConfiguration to use DecodingStrategy.dictionaryBased by default by @marcelofabri in https://github.com/airbnb/lottie-ios/pull/1777
* Allow customizing default AnimationCacheProvider by @marcelofabri in https://github.com/airbnb/lottie-ios/pull/1779
* Replace LRUAnimationCache with a thread-safe NSCache-based cache by @marcelofabri in https://github.com/airbnb/lottie-ios/pull/1783
* Update minimum Swift version to 5.5 by @calda in https://github.com/airbnb/lottie-ios/pull/1787
* Adds .lottie file load capability to LottieAnimation by @eharrison in https://github.com/airbnb/lottie-ios/pull/1785
* Add Rounded Corners by @johnny-duo in https://github.com/airbnb/lottie-ios/pull/1795
* Add rounded corner support to Core Animation rendering engine by @calda in https://github.com/airbnb/lottie-ios/pull/1796
* Add support for animating `startPoint` and `endPoint` of radial gradients by @calda in https://github.com/airbnb/lottie-ios/pull/1798
* Update Core Animation rendering engine to use device RGB color space by @calda in https://github.com/airbnb/lottie-ios/pull/1801
* added mask to bounds flag by @BugorBN in https://github.com/airbnb/lottie-ios/pull/1814
* Add completion callbacks to LottieAnimationView DotLottie initializers by @calda in https://github.com/airbnb/lottie-ios/pull/1810