A protocol-oriented approach to the Coordinator app architecture pattern.

What's New

CoordinatorPlus 0.3.0


This versions removes all of the deprecated bridging typealias and variable/function extensions. (If you need to update older implementations, perform a migration through the versions: 0.1.0 > 0.2.0 > 0.3.0.


A protocol-oriented approach to the Coordinator app architecture pattern.

Twitter: @richardpiazza


CoordinatorPlus is distributed using the Swift Package Manager. To install it into a project, add it as a dependency within your Package.swift manifest:

let package = Package(
    dependencies: [
        .package(url: "", from: "0.3.0")

Then import the CoordinatorPlus packages wherever you'd like to use it:

import CoordinatorPlus

Why the 'Protocol-Oriented' approach?

Many projects use this architecture pattern, and each have a slightly different implementation.

Implementing the architecture through protocols and protocol extensions allows for simple implementations with minimal need to customize the handling and presentation of Coordinators & View Controllers.

This reduces the differences on a project-by-project basis and improves the comprehension and understanding of all those who interact with the framework.


The primary classes to note are:

  • AppCoordinator
  • Flow
  • FlowCoordinator
  • FlowCoordinatorDelegate

All of the other files fall outside of what someone could consider a standard Coordinated MVC architectural pattern. The purpose of these files is to provide default/sample implementations for specific use cases when used on a UIKit platform. This implement is rather opinionated.


Heavily influenced by Josh Sullivan's article and example project BeyondViewControllers.


  • Swift Tools 5.2.0
View More Packages from this Author


  • None
Last updated: Thu Feb 02 2023 09:26:40 GMT-0500 (GMT-05:00)