A SwiftUI navigation library for building deep-linkable apps with composition, testing, and ergonomics.
Composable Navigator is a SwiftUI library for managing navigation in iOS applications. It solves the challenges of vanilla SwiftUI navigation by providing a composable, testable, and deep-linkable navigation system. It allows developers to define navigation paths declaratively and handle complex navigation scenarios with ease.
iOS developers building SwiftUI applications who need robust navigation, deep linking support, and testable navigation logic. It is particularly useful for teams working on medium to large-scale apps with complex navigation requirements.
Developers choose Composable Navigator for its composable architecture, which simplifies navigation state management and enables full deep linking. Its testability and ergonomic design make it a preferred alternative to manual navigation handling in SwiftUI.
An open source library for building deep-linkable SwiftUI applications with composition, testing and ergonomics in mind
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a declarative NavigationTree to define all valid paths, making it scalable for complex hierarchies without manual state management.
Translates URLs into navigation paths with first-class Deeplink types, enabling full deep linking capabilities beyond vanilla SwiftUI.
Exposes navigator and screen IDs via environment, allowing navigation actions to be tested in unit tests without UI tests.
Screens define their own presentation styles (e.g., push or sheet), separating presentation from business logic for cleaner code.
The README marks the project as unmaintained, risking incompatibility with future SwiftUI updates and lacking bug fixes or support.
Currently supports only sheet and push presentation, as noted in the documentation, which may not cover all navigation needs like custom modals.
Requires defining NavigationTrees and screens upfront, adding boilerplate for simple apps compared to vanilla SwiftUI navigation.
Has ties to The Composable Architecture for helper packages, which may introduce unnecessary complexity if not using TCA or if dependencies change.