A protocol-oriented iOS library for declarative view controller composition, navigation, and deep linking, replacing the Coordinator pattern.
RouteComposer is a protocol-oriented Swift library for iOS that handles view controller composition, navigation, and deep linking through declarative configurations. It solves the problem of tangled navigation code by separating routing logic from view controllers, enabling flexible and reusable navigation flows. It can replace the Coordinator pattern and works alongside UIKit and SwiftUI.
iOS developers building complex navigation flows, deep linking, or A/B testing scenarios, especially those using UIKit and seeking to decouple navigation logic from view controllers.
Developers choose RouteComposer for its declarative configuration, deep linking out-of-the-box, and ability to replace Coordinator patterns with a more modular, protocol-oriented approach that reduces boilerplate and improves testability.
Protocol oriented, Cocoa UI abstractions based library that helps to handle view controllers composition, navigation and deep linking tasks in the iOS application. Can be used as the universal replacement for the Coordinator pattern.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables defining navigation steps with a fluent API, cleanly separating routing logic from view controllers, as shown in the Configuration.productScreen example in the README.
Makes every view controller deep-linkable by default, simplifying universal link handling without extra code, highlighted in the deep-linking section of the README.
Reduces boilerplate associated with the Coordinator pattern by providing a modular, protocol-oriented alternative, evidenced by testimonials from companies like Viz.ai in the README.
Supports routing interceptors for tasks like authentication checks and post-routing analytics, allowing seamless integration of business logic into navigation, as described in the interceptor examples.
Requires implementing multiple protocols (Factory, Finder, Action, etc.) for each view controller, leading to a steeper initial setup compared to simpler solutions, as seen in the implementation examples.
While compatible with SwiftUI, the library is fundamentally built around UIKit abstractions, which might not align well with pure SwiftUI projects and adds complexity for SwiftUI-only teams.
Has a smaller ecosystem and community support compared to more established navigation libraries, which could impact long-term maintenance, third-party resources, and troubleshooting.