Swiftpack.co - davdroman/swiftui-navigation-transitions as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by davdroman.
davdroman/swiftui-navigation-transitions 0.9.0
Pure SwiftUI Navigation transitions ✨
⭐️ 163
🕓 2 weeks ago
iOS tvOS macCatalyst
.package(url: "https://github.com/davdroman/swiftui-navigation-transitions.git", from: "0.9.0")



NavigationTransitions is a library that integrates seamlessly with SwiftUI's Navigation views, allowing complete customization over push and pop transitions!

The library is fully compatible with:

  • NavigationView (iOS 13, 14, 15)
  • NavigationStack (iOS 16)


Instead of reinventing the entire navigation stack just to control its transitions, NavigationTransitions ships with a simple modifier that can be applied directly to SwiftUI's very own first-party navigation components.

The Basics

iOS 13+

NavigationView {
  // ...

iOS 16

NavigationStack {
  // ...

The API is designed to resemble that of built-in SwiftUI Transitions for maximum familiarity and ease of use.

You can apply custom animations just like with standard SwiftUI transitions:

    .fade(.in).animation(.easeInOut(duration: 0.3))

You can combine them:

    .slide.combined(with: .fade(.in))

And you can dynamically choose between transitions based on logic:

    reduceMotion ? .fade(.in).animation(.linear) : .slide(.vertical)


The library ships with some standard transitions out of the box:

In addition to these, you can create fully custom transitions in just a few lines of SwiftUI-like code!

struct Swing: NavigationTransition {
    var body: some NavigationTransition {
        Slide(axis: .horizontal)
        MirrorPush {
            let angle = 70.0
            let offset = 150.0
            OnInsertion {
                Offset(x: offset)
            OnRemoval {
                Offset(x: -offset)

The Demo app showcases some of these transitions in action.


A sweet additional feature is the ability to override the behavior of the pop gesture on the navigation view:

.navigationTransition(.slide, interactivity: .pan) // full-pan screen gestures!

This even works to override its behavior while maintaining the default system transition in iOS:

.navigationTransition(.default, interactivity: .pan) // ✨


The documentation for releases and main are available here:

Other versions


Feel free to post questions, ideas, or any cool transitions you build in the Discussions section!

I sincerely hope you enjoy using this library as much as I enjoyed building it ❤️


Stars: 163
Last commit: 2 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

2 weeks ago

What's Changed

Full Changelog: https://github.com/davdroman/swiftui-navigation-transitions/compare/0.8.1...0.9.0

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics