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.
> **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
> **Note**: Lottie 3.4.0 added a new rendering engine powered by Core Animation. Please try it out and let us know if you encounter any issues! It will be enabled by default in Lottie 4.0, which we plan on releasing later this month. More information is available in this announcement: https://github.com/airbnb/lottie-ios/discussions/1627
### Lottie 3.5.0
This version renames several public types, to resolve conflicts with types in Apple frameworks (https://github.com/airbnb/lottie-ios/issues/1420):
- `Lottie.Animation` has been renamed to `LottieAnimation`, to resolve a conflict with [`SwiftUI.Animation`](https://developer.apple.com/documentation/swiftui/animation)
- `Lottie.Color` has been renamed to `LottieColor`, to resolve a conflict with [`SwiftUI.Color`](https://developer.apple.com/documentation/swiftui/color)
- `Lottie.Vector3D` has been renamed to `LottieVector3D`, to resolve a conflict with [`Spatial.Vector3D`](https://developer.apple.com/documentation/spatial/vector3d?changes=latest_major)
For consistency with these new names, we have also renamed the following public types:
- `Lottie.AnimationView` has been renamed to `LottieAnimationView`
- `Lottie.Vector1D` has been renamed to `LottieVector1D`
- `Lottie.Vector2D` has been renamed to `LottieVector2D`.
For backwards compatibility Lottie 3.5.0 includes `typealias`es for the old names, which map to the new names. These `typealias`es are marked as deprecated and include fix-its to update call-sites to the new name.
### Lottie 4.0
We plan on releasing **Lottie 4.0** in the next few weeks. In Lottie 4.0 we will remove the compatibility typealiases (for `Animation`, `AnimationView`, `Color`, etc) , so code using the old names will no longer compile. This will resolve the naming conflicts with SwiftUI types. Consider updating to Lottie 3.5.0 first, applying the fix-its recommended by the deprecation warnings, and then update to Lottie 4.0 once it is released (Lottie 4.0 will no longer include deprecation warnings with fix-its). Thank you for bearing with us through this transition process!
Lottie 4.0 will also make the new Core Animation rendering engine ([added in Lottie 3.4.0](https://github.com/airbnb/lottie-ios/discussions/1627)) the default rendering engine option. As mentioned above, please try out the new rendering engine if you haven't yet and let us know if you encounter any issues! We've been hard at work fixing issues reported by the community.
### Known issues
If your application has a storyboard that references `AnimationView`, it may crash when using Lottie 3.5.0 (https://github.com/airbnb/lottie-ios/issues/1771). The fix for this issue is to update all references of `AnimationView` to `LottieAnimationView` and update all references of `Animation` to `LottieAnimation`. This should be resolved in Lottie 4.0, where code using the old names will no longer compile.
> **Note**: Lottie 3.4.0 added a new rendering engine powered by Core Animation. Please try it out and let us know if you encounter any issues! It will be enabled by default in Lottie 4.0, which we plan on releasing later this month. More information is available in this announcement: https://github.com/airbnb/lottie-ios/discussions/1627
## What's Changed
* Updated Main Thread rendering engine to use `warn` (`print`) instead of `assertionFailure` when detecting unsupported usage of repeaters (https://github.com/airbnb/lottie-ios/pull/1754)
* Fixed issue where manually-interpolated shape animations would ignore time remapping (https://github.com/airbnb/lottie-ios/pull/1757)
* Added marker duration support (https://github.com/airbnb/lottie-ios/pull/1749)
* Updated `animationDidSet` to be `open` (https://github.com/airbnb/lottie-ios/pull/1746)
* Updated `AnimatedSwitch` and `AnimatedButton` to allow overrides of begin/end tracking in subclasses (https://github.com/airbnb/lottie-ios/pull/1747)
* Added `animateUpdateWhenChangingAnimation` flag to `AnimatedControl` (https://github.com/airbnb/lottie-ios/pull/1750)
> **Note**: Lottie 3.4.0 added a new rendering engine powered by Core Animation. Please try it out and let us know if you encounter any issues! It will be enabled by default in a future version of Lottie. More information is available in this announcement: https://github.com/airbnb/lottie-ios/discussions/1627
## New Features
* Updated Core Animation rendering engine to support `TextProvider`s (https://github.com/airbnb/lottie-ios/pull/1723)
* Updated Core Animation rendering engine to support time stretch in pre-comp layers (https://github.com/airbnb/lottie-ios/pull/1726)
* Updated `Animation.loadedFrom` method to support using a custom `URLSession` (https://github.com/airbnb/lottie-ios/pull/1733)
## Bug fixes
* Fixed performance issue with line dash patterns (https://github.com/airbnb/lottie-ios/pull/1736)
* Fixed race condition in Core Animation rendering engine's `playbackState` property (https://github.com/airbnb/lottie-ios/pull/1727)
* Fixed issue where Core Animation rendering engine would ignore `hidden` flag on some shape items (https://github.com/airbnb/lottie-ios/pull/1728)
* Fixed issue where Core Animation rendering engine would ignore `CAGradientLayer` locations / color stops (https://github.com/airbnb/lottie-ios/pull/1734)
* Fixed issue where Core Animation rendering engine would not render alpha gradient (https://github.com/airbnb/lottie-ios/pull/1737)
> **Note**: Lottie 3.4.0 added a new rendering engine powered by Core Animation. Please try it out and let us know if you encounter any issues! It will be enabled by default in a future version of Lottie. More information is available in this announcement: https://github.com/airbnb/lottie-ios/discussions/1627
## New features
* Added support for Repeater shape items to Core Animation rendering engine (https://github.com/airbnb/lottie-ios/pull/1688)
* Added support for inverted matte layers to Core Animation rendering engine (https://github.com/airbnb/lottie-ios/pull/1712)
* Added `fillMode` support to `GradientFill` shape items (https://github.com/airbnb/lottie-ios/pull/1702)
* Added support for non-integer animation widths/heights (https://github.com/airbnb/lottie-ios/pull/1694)
## Bug fixes
* Fixed CocoaPods installation issue by removing `.swift-version` file (https://github.com/airbnb/lottie-ios/pull/1674)
* Changeed default behavior when bundle image is not found from `assertionFailure` to `warn` (https://github.com/airbnb/lottie-ios/pull/1680)
* Fixed issue where `isAnimationPlaying` would be incorrect when using `LottieLoopMode.playOnce` (https://github.com/airbnb/lottie-ios/pull/1682)
* Fixed regression where `InvertedMatteLayer`s wouldn't animate when using Main Thread rendering engine (https://github.com/airbnb/lottie-ios/pull/1684)
* Core Animation rendering engine now respects `LayerModel.hidden` and `ShapeItem.hidden` flags (https://github.com/airbnb/lottie-ios/pull/1689)
* Fixed where strokes would not appear under certain conditions (https://github.com/airbnb/lottie-ios/pull/1691)
* Core Animation rendering engine now supports animating multiple properties of shape bezier paths (https://github.com/airbnb/lottie-ios/pull/1690)
* Core Animation rendering engine now correctly Ignores masks with `MaskMode.none` (https://github.com/airbnb/lottie-ios/pull/1693)
* Fixed issue where Core Animation engine would render negative stroke offsets incorrectly (https://github.com/airbnb/lottie-ios/pull/1698)
* Improved shape fill behavior for overlapping shapes when using Core Animation rendering engine (https://github.com/airbnb/lottie-ios/pull/1699)
* Fixed issue that caused text layer descenders to be cut off when using some fonts https://github.com/airbnb/lottie-ios/pull/1697
* `RenderingEngineOption.automatic` now falls back to the Main Thread rendering engine when attempting to apply `Trim` to `Fill` (unsupported by Core Animation rendering engine) (https://github.com/airbnb/lottie-ios/pull/1706)
* Fixed bug in `AnimationView.play(fromFrame:toFrame:)` with `fromFrame: nil` (https://github.com/airbnb/lottie-ios/pull/1707)
* Fixed issue where some spatial keyframes would be ignored by Core Animation rendering engine (https://github.com/airbnb/lottie-ios/pull/1714)
* Fixed issue where certain `AnimationKeypath`s were not applied correctly by Core Animation rendering engine (https://github.com/airbnb/lottie-ios/pull/1715)
* Fixed issue where stroke with dash pattern could unexpectedly be rendered as pills instead of circles (https://github.com/airbnb/lottie-ios/pull/1718)
* Fixed issue where large `GradientFill` / `GradientStroke` would be cut off when using Core Animation rendering engine (https://github.com/airbnb/lottie-ios/pull/1721)