rebeloper/Navigation Coordinator

  • $99

Don't use NavigationStack

use a Coordinator instead 👇

Check out Navigation Kit instead

NavigationCoordinator will not be updated as of iOS25.

Ferdous Mahmud Akash

⭐️⭐️⭐️⭐️⭐️

I would like to give my thanks to Alex for making the complex topic of iOS development more understandable. His tutorials, particularly those suggested by my colleague, were instrumental in clarifying the fundamental concepts of iOS development for me as a junior developer. Additionally, his comprehensive resources on Navigation Coordinator in SwiftUI significantly enhanced my ability to write clean and maintainable code. His contributions have been invaluable in my journey as an iOS developer.

Here's a list of features Navigation Coordinator has to offer:
👉 Simple and unified API
👉 Decouple navigation logic from your views 🤯
👉 Supports iOS14+, macOS11+, tvOS14+, watchOS7+ and visionOS1+
👉 Supports SwiftUI2, SwiftUI3, SwiftUI4, SwiftUI5 and SwiftUI6 💎
👉 Supports Dependency Injection (move data between views easily)
👉 Access the navigation with the @Environment
👉 Easily use navigation within View Models too (MVVM)
👉 Perfect for deep links
👉 Works with TabView
👉 Easily pop to root
👉 Can pop back to any view
👉 EASY 3 step setup
👉 Supports .link, .sheet and .fullScreenCover navigation
👉 Has .onComplete & .onDismiss callbacks
👉 Works with async/await
👉 Example Xcode Project
👉 100% Documented

You don't have to be an advanced developer to start using Navigation Coordinator!

Step 1.

Set all your Destinations in one place.

Step 2.

Use the NavigationRoot to set your root view.

Step 3.

Access the built in navigation through the environment.

Now comes the fun part...

Push

Push a view. Optionally add onComplete and/or onDismiss callbacks. Select the push type. Use in an async/await environment.

Pop

Pop to any view in any way you want to.

Replace

Not that common but very useful if needed.

Deep link

Deep link to any view. Use completion handlers or async/await. And of course listen to the onDismiss callback if you wish to.

Supports TabView

v.4.0.3+

Step 1.

Instead of TabView use TabNavigationRoot. Choose the initial tab to be shown.

Step 2.

Switch tabs easily with the tabNavigation environment.

100% Documented

Every function, every variable, every line of code is thoroughly documented, so you get peace of mind what Navigation Coordinator does under the hood.

Xcode Project

There's an example Xcode project waiting for you with all the use cases!

Contents

Video documentation

v5.0.0+
v4.0.0+
v3.0.0+
v1.0.0+

Version 5.0.1

onAppear bug fix

Demo.zip
Resources.zip

Version 5.0.0 (iOS 17+ only)

Rewritten from the ground up to support iOS17+ with NavigationStack

Demo.zip
Resources.zip

Version 4.0.3 (iOS14 - 17 only)

Supports tab switches 🤩

NavigationCoordinatorDemo.zip
Resources.zip

Version 4.0.2

Sheet swipe bug fix

NavigationCoordinatorDemo.zip
Resources.zip
Example.zip

Version 4.0.1

Fixed onAppear triggered twice upon push

Added example of how you can use navigation in a view model

NavigationCoordinatorDemo.zip
Resources.zip

Version 4.0.0

  • 🚨 Improved API

  • Access the navigation through the @Environment

  • Simpler Destination setup

  • One step pop for multiple link pushes

  • Improved Demo to showcase dependency injection

NavigationCoordinatorDemo.zip
Resources.zip
Video tutorial
Preview

Version 3.0.0 - Better API 🤯

🚨 API change: made it even simpler

NavigationCoordinatorDemo.zip
Resources.zip
Video tutorial
Preview

Version 2.0.0

Added onDismiss

NavigationCoordinatorDemo.zip
Resources.zip

Video Documentation for v.1.0.0

SwiftUI Coordinator Pattern: Everything You Need to Know
Preview

Version 1.0.0

NavigationCoordinatorDemo.zip
Resources.zip

Compatible with:

iOS14+ ・ macOS11+・ tvOS14+・ watchOS7+ ・ visionOS1+