SwiftUI Path Animations shape animation
  • June 25, 2025

Introduction


This packages contains SimilarShape and InterpolatedShape, both can be used to achieve shapes animations with SwiftUI.

How it works?


SimilarShape should be used when animating two or more similar paths. A path is similar to another one when having the same number and types of Path.Element. I.e.: two rects with different height, width and origin are considered similar, since the two paths are made by the same Path.Element but with different CGPoint.

InterpolatedShape should be used when animating two or more different paths. Internally, it will create a slighlty different path used for animation, by interpolating the original one.

Example


The attached example (Example/Example.xcodeproj) is using:

  • SimilarShape to perform the drag animation of the morphing circle đŸ””, since the Path create starting from the original circle and the one create with the dragging point are essentially the same
  • InterpolatedShape to perform the animated trasformation from a circle and a rounded rectangle, being very different paths.

GitHub


View Github

#swift #swiftui #swiftui-example
YOU MIGHT ALSO LIKE...
🧭 NavigationKit

NavigationKit is a lightweight library which makes SwiftUI navigation super easy to use. đŸ’» Installation 📩 Swift Package Manager Using Swift Package Manager, add ...

swiftui-navigation-stack

An alternative SwiftUI NavigationView implementing classic stack-based navigation giving also some more control on animations and programmatic navigation. NavigationStack Installation ...

Stinsen

Simple, powerful and elegant implementation of the Coordinator pattern in SwiftUI. Stinsen is written using 100% SwiftUI which makes it ...

SwiftUI Router

With SwiftUI Router you can power your SwiftUI app with path-based routing. By utilizing a path-based system, navigation in your app becomes ...

FlowStacks

This package takes SwiftUI's familiar and powerful NavigationStack API and gives it superpowers, allowing you to use the same API not just ...