Skip to content
CAI
Software that uses CAICheck a score

DeclarativeHub/ReactiveKit

56.0

Adequate · 1 October 2026

5.9k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.