QuickBirdEng/XCoordinator
59.6
Adequate · 1 October 2026
4k
lines of production code
Swift
with JavaScript
2
measurements over time
What this system is
This system is a Swift-based navigation library that implements the coordinator pattern for iOS and tvOS applications. It provides reactive extensions for both RxSwift and Apple's Combine framework, allowing developers to manage view controller transitions and observe navigation events asynchronously. The project supports multiple deployment targets and includes tooling for building, testing, and documentation generation.
Features
Add Combine-based route triggering API
Users can now trigger navigation routes using Apple's Combine framework. A new \Router+Combine.swift\ extension adds a \publishers.trigger(\_:with:)\ method to \Router\, returning a \Future\ that completes when the route transition finishes. This provides an asynchronous, reactive way to handle navigation events for iOS 13.0+ and tvOS 13.0+.
Sources/XCoordinatorCombine · high confidence
Generated Xcode project for XCoordinator and RxSwift frameworks
The repository now includes a generated Xcode project (XCoordinator.xcodeproj) that bundles the XCoordinator library along with its RxSwift and Combine extensions, as well as the RxSwift dependency itself. This allows developers to open and build the project directly in Xcode without relying solely on Swift Package Manager, providing a standard iOS development workflow for the coordinator pattern implementation and its reactive bindings.
XCoordinator.xcodeproj · high confidence
New shell scripts for building and documenting the project
Added three new shell scripts to automate the build and documentation workflow: build.sh compiles the Swift project for the iOS simulator, docs.sh generates documentation using SourceKitten and Jazzy, and check\_docs.sh validates the documentation output and reports any undocumented items or uncommitted changes.
scripts · high confidence
RxSwift reactive extensions for Router navigation
The XCoordinatorRx module now provides RxSwift integration for the Router, allowing developers to trigger navigation routes and observe their completion as RxSwift observables. This change introduces a new \Router+Rx.swift\ file that adds an \rx\ property to the Router class, exposing methods like \trigger(\:with:)\ and \trigger(\:)\ which return \Observable\<Void\>\ instances. Users can now subscribe to these observables to react to navigation events, such as when a route transition completes, enabling more reactive and chainable navigation logic within their applications.
Sources/XCoordinatorRx · high confidence
Behavioural changes
Added iOS build configuration for Xcode projects
A new \ios.xcconfig\ file has been added to the Sources directory to standardize iOS build settings. This configuration sets the deployment target to iOS 12.0, supports both simulator and device architectures, and enables product validation, providing a consistent baseline for Xcode project builds.
Sources · high confidence
Migrated Xcode project schemes from CocoaPods to Swift Package Manager
The Xcode project schemes have been updated to reflect the migration from the legacy CocoaPods dependency manager to the Swift Package Manager. The build targets now reference the native XCoordinator frameworks (XCoordinator, XCoordinatorCombine, and XCoordinatorRx) instead of the previous Pods-RxCoordinator artifacts. Scheme configurations have been upgraded to Xcode 11.3 format (version 1.7), and the test scheme now explicitly references the XCoordinatorTests test plan and test bundle, replacing the previous empty testable configuration.
XCoordinator.xcodeproj/xcshareddata · high confidence
XCoordinator 2.0 release with Swift 4 compatibility and tvOS support
XCoordinator has been updated to version 2.0, introducing support for tvOS and ensuring compatibility with Swift 4 (previously limited to Swift 5.1). This release includes a comprehensive refactoring of the coordinator lifecycle, specifically improving the logic for removing child coordinators to ensure they are cleaned up only after all transitions have completed. The API has been refined with renamed methods (such as \handleGesture(of:)\ to avoid Apple validation conflicts), removed deprecated APIs, and stricter rules for managing child presentables in the view hierarchy.
Sources/XCoordinator · high confidence
Test coverage
Added Linux-compatible unit tests for XCoordinator transitions and animations
The test suite now includes support for running on Linux by adding \LinuxMain.swift\ and \XCTestManifests.swift\, which register the \AnimationTests\ and \TransitionTests\ suites. These new tests verify that standard and interactive animations, as well as transition completion callbacks, are correctly triggered for all coordinator types (View, Split, Page, TabBar, and Navigation).
Tests · high confidence
Dependencies
Migrate to SPM and update RxSwift dependency
The project now supports Swift Package Manager (SPM) via a new Package.swift and Package.resolved, adding tvOS 9.0 support alongside iOS 9.0. The RxSwift dependency has been updated to version 6.2.0 (with the podspec specifying \~\> 6.1), and the legacy RxCoordinator Podfile and Podfile.lock (which previously used RxSwift/RxCocoa 4.x) have been removed.
(dependencies) · high confidence
Removal of RxCoordinator CocoaPods dependencies
The RxCoordinator project has removed its CocoaPods dependency structure, deleting the \Pods\ directory, the \Manifest.lock\ file, and the generated \Pods.xcodeproj\. This eliminates the vendored copies of the RxCocoa and RxSwift libraries (version 4.1.2) and their associated build schemes, indicating a migration away from the CocoaPods package manager for this component.
RxCoordinator · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 59 → 60 (+0.1)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 100 → 99 (-1.2)
- Architecture 85 → 97 (+12.0)
- Maturity 47 → 47 (+0.0)
- Readiness 49 → 50 (+0.7)
- Security 85 → 85 (+0.0)
Resolved (7)
- Documentation: no installation or build instructions
- Documentation: no installation or build instructions (README.md)
- Documentation: no installation or build instructions (docs/Extensions/UIViewController.html)
- Documentation: no project overview
- Documentation: no project overview (docs/Extensions/UIViewController.html)
- Documentation: no usage examples
- Documentation: no usage examples (README.md)
New (6)
- Coverage not measured — Swift suite
- FileTooLong: js/typeahead.jquery.js (docs/js/typeahead.jquery.js)
- Inconsistent method overloading for triggering transitions. The Router type exposes four variations of trigger that differ only by the presence of optional parameters (TransitionOptions and completion). This creates ambiguity and forces callers to choose between different signatures for essentially the same operation, rather than using a single method with optional parameters.
- Inconsistent naming and return types for context-aware triggering. Coordinator and StrongRouter use contextTrigger with a completion handler, while Router uses contextTrigger returning a TransitionContext. This suggests a split in design intent (fire-and-forget vs. chainable/context-returning) that is not clearly distinguished by naming or type hierarchy.
- Outdated: rxswift
- Redundant method exposure across coordinator types. AnyCoordinator, BaseCoordinator, and BasicCoordinator all expose prepareTransition. Since AnyCoordinator is an erased type wrapper and BaseCoordinator is the base implementation, exposing this method on AnyCoordinator (which is meant to be a type-erased container) is inconsistent with typical type-erasure patterns where internal logic is hidden. Furthermore, BasicCoordinator inherits from BaseCoordinator, making the explicit re-declaration or identical signature redundant.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
QuickBirdEng/XCoordinator was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit fc4fd2d4e5718ea7579bd9022d93af7edecd7b52 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.