DeclarativeHub/ReactiveKit
56.0
Adequate · 1 October 2026
5.9k
lines of production code
Swift
primary language
2
measurements over time
What this system is
ReactiveKit is a reactive programming library for Apple platforms that manages asynchronous data streams through Signals, Properties, and Subjects. It provides a comprehensive set of operators for transforming and observing these streams, along with utilities for UI binding and managing loading states. The system features native interoperability with Apple's Combine framework, allowing seamless conversion between ReactiveKit types and Combine Publishers, while supporting multiple platforms including iOS, macOS, tvOS, and watchOS.
How it got here
2015 — Swift 5.0 support and project structure
5 changes.
The project was updated to support Swift 5.0 and adjusted deployment targets while restructuring the Xcode workspace and project files. Shared schemes were added for all supported platforms to standardize build and test configurations, and source control blueprints were configured to track dependencies.
2016 — ReactiveKit v2 and Combine integration
4 changes.
This period focused on releasing ReactiveKit v2, which modernized the library with native Apple Combine framework integration and updated Swift concurrency patterns. The work included aligning the API with Combine conventions, improving the threading model, and introducing new capabilities like LoadingProperty and key-path bindings. Comprehensive test coverage and performance baselines were added to ensure the stability and correctness of these new features.
2018–2020 — Initial framework scaffolding and core primitives
5 changes.
This period focused on establishing the foundational structure of the ReactiveKit framework, including project metadata, umbrella headers, and cross-platform test support. It introduced core publisher and subscriber types such as Deferred, Empty, Sink, and Accumulator, while also providing interactive playground tutorials to aid user onboarding.
Features
Add Subscribers module with Sink and Accumulator utilities
The Sources/Subscribers directory now contains the core types for the new Subscribers module, including the Sink subscriber for handling value and completion callbacks, the Accumulator subscriber for collecting values into an array (useful for testing), and supporting types like Completion and Demand. This introduces the foundational subscriber components that allow publishers to deliver values to consumers.
Sources/Subscribers · high confidence
Added Deferred and Empty signal publishers
New \Deferred\ and \Empty\ signal types have been added to the \Sources/Publishers\ module. \Deferred\ allows creating a signal that waits until subscription to execute a factory closure, while \Empty\ provides a signal that publishes no values and optionally finishes immediately, supporting both immediate completion and never-completing behaviors.
Sources/Publishers · high confidence
Added ReactiveKit playground tutorials
New interactive playground pages have been added to the Playground.playground/Pages directory to help users learn ReactiveKit. These tutorials cover creating signals (including SafeSignal and Signal initializers), observing signals (with methods like observeNext, observeCompleted, and observeFailed), transforming signals (using map, filter, flatMap, and zip), and working with UI by binding signals to UIKit views.
Playground.playground/Pages · high confidence
Added Signal tutorials to the playground
A new playground file has been added that includes five tutorial pages: Creating Signals, Observing Signals, Transforming Signals, Working with UI, and Exploration.
Playground.playground · high confidence
Added Xcode workspace configuration
The project now includes an Xcode workspace file that groups the main ReactiveKit project with a playground and references the upstream SwiftBond repository for source control tracking, enabling easier local development and testing.
ReactiveKit.xcworkspace · high confidence
Added project metadata and bridging headers for ReactiveKit
This change introduces the foundational supporting files for the ReactiveKit framework, including the main Info.plist (configured as a framework bundle), a test bundle Info.plist, and the ReactiveKit.h umbrella header. These files establish the necessary metadata, bundle identifiers, and public interface exports required for the library to be built and integrated into iOS/macOS applications.
Supporting Files · high confidence
Added shared Xcode schemes for iOS, macOS, tvOS, and watchOS
Shared Xcode schemes are now included for the iOS, macOS, tvOS, and watchOS targets, enabling consistent build, test, launch, profile, analyze, and archive configurations across the team. The iOS scheme is configured to run the ReactiveKit-Tests unit tests, while the macOS, tvOS, and watchOS schemes are set up for building and launching the framework without specific test targets.
ReactiveKit.xcodeproj/xcshareddata/xcschemes · high confidence
Introduction of ReactiveKit v2 with Combine integration and modern Swift concurrency
This release introduces ReactiveKit v2, bringing the library up to date with modern Swift and Apple frameworks. It adds native integration with Apple's Combine framework, allowing seamless conversion between ReactiveKit Signals and Combine Publishers via \toSignal()\ and \toPublisher()\. The threading model has been improved by replacing DispatchQueue-based locks with \NSRecursiveLock\ for better performance and deadlock prevention. The API has been aligned with Combine conventions, introducing operators like \receive(on:)\, \sink\, and \AnyCancellable\, while renaming internal types (e.g., \Signal1\ to \SafeSignal\, \PublishSubject\ to \PassthroughSubject\) and deprecating older global functions in favor of initializers. New capabilities include \LoadingProperty\ for managing asynchronous state, \ConnectableSignal\ for shared subscriptions, and key-path bindings for easier UI updates.
Sources · high confidence
Behavioural changes
ReactiveKit project structure and source file registration
The Xcode project file for ReactiveKit has been updated to include a comprehensive set of source files, reflecting the library's reactive programming capabilities. This includes core components such as Signal, Property, and Subject implementations, along with extensions for threading, error handling, and transformation. New additions support Combine-style interoperability (Scheduler, subscribe/on operators, Published property wrapper, ObservableObject), loading states (LoadingProperty, LoadingSignal), and debugging via Timelane integration. The project also registers test files for these features, ensuring the library's reactive streams and bindings are validated.
ReactiveKit.xcodeproj · high confidence
Workspace configuration and source control blueprint added
The Xcode workspace has been initialized with a new \contents.xcworkspacedata\ file referencing the \ReactiveKit.xcodeproj\, and an \IDEWorkspaceChecks.plist\ file has been added to suppress the 32-bit warning. Additionally, a source control blueprint (\ReactiveKit.xcscmblueprint\) is now included, defining the workspace's version control state and tracking remote repositories for the main project, as well as dependencies like Quick, Nimble, Bond, and ReactiveFoundation.
ReactiveKit.xcodeproj/project.xcworkspace · high confidence
Test coverage
Added Linux test entry point; Added performance test baselines for SignalTests; Added test coverage for ReactiveKit core components and Combine integration.
Dependencies
ReactiveKit version 3.19.1 release with Swift 5.0 support
ReactiveKit has been updated to version 3.19.1, introducing official support for Swift 5.0 in both the Swift Package Manager manifest and the CocoaPods specification. The release adjusts minimum deployment targets to macOS 10.10, iOS 8.0, tvOS 9.0, and watchOS 2.0, ensuring compatibility with the latest tooling while maintaining support for older operating systems.
(dependencies) · 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 52 → 56 (+3.5)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 99 → 99 (-0.7)
- Architecture 98 → 99 (+1.5)
- Maturity 40 → 51 (+11.2)
- Readiness 51 → 50 (-1.6)
- Security 50 → 50 (+0.0)
Resolved (7)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Dormant codebase
- Further sole-owners (lower concentration)
- Most significant orphaned file (Sources/SignalProtocol+Combining.swift)
- Most significant orphaned file (Sources/SignalProtocol+Filtering.swift)
- Off-boarding risk: anonymized user #1
New (1)
- Coverage not measured — Swift suite
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
DeclarativeHub/ReactiveKit 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 5c61e0869cfaf8f9fcd17afecb8e6c721d153186 — 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.