Skip to content
CAI
Software that uses CAICheck a score

RxSwiftCommunity/RxKeyboard

50.2

Weak · 1 October 2026

559

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

RxKeyboard is a reactive iOS library that provides observables for keyboard state changes, such as visibility and frame adjustments. It enables developers to automatically adjust UI elements, like input bars, in response to keyboard appearance and disappearance. The system supports modern iOS development through Swift Package Manager and includes utilities for handling safe areas and gesture conflicts.

How it got here

2016 — Swift 5.1 and RxSwift 6 migration

6 changes.

The project was upgraded to support Swift 5.1 and RxSwift 6.0, requiring a comprehensive migration of the build system to Swift Package Manager and the removal of legacy Xcode project files. This period also involved updating dependencies, simplifying bundle configurations, and removing the interactive demo app to align with the new technical requirements.

2017–2021 — Example modernization and internal refactoring

6 changes.

The project focused on modernizing the example application by migrating it to Swift 4, updating Xcode settings, and adding support for iPhone X safe areas. Concurrently, the core library underwent internal refactoring to improve testing capabilities through protocol abstraction and enhance keyboard height calculation accuracy. Maintenance efforts also included adding a Carthage build script to resolve Xcode 12 architecture conflicts.

Removals

Removed legacy Xcode project and schemes

The RxKeyboard.xcodeproj file and its associated build schemes (RxKeyboard.xcscheme and RxKeyboardDemo.xcscheme) have been deleted. This removes the manual Xcode project configuration, including the embedded demo application and CocoaPods-based build settings, indicating a shift away from this specific project file structure for managing the library and its demo.

RxKeyboard.xcodeproj · high confidence

Behavioural changes

Added Carthage build script to support Xcode 12

A new \scripts/carthage.sh\ script has been added to facilitate building with Carthage. This script automatically configures an Xcode configuration file to exclude ARM architectures (arm64, arm64e, etc.) for simulator builds, addressing a specific build failure in Xcode 12 caused by duplicate architectures during the lipo process. Users running Carthage builds on Xcode 12 will now have this architecture exclusion handled automatically.

scripts · high confidence

Demo app keyboard interaction view removed

The main demo view controller (ViewController.swift) that previously demonstrated keyboard dismissal and toolbar positioning via RxKeyboard has been deleted. This removes the interactive demo showing how to adjust UI elements based on keyboard visibility.

Demo · high confidence

Migration to Swift Package Manager removes legacy Xcode project files

The project has switched its dependency management to Swift Package Manager, resulting in the removal of the legacy Objective-C umbrella header (RxKeyboard.h) and the Xcode-specific Info.plist. This change simplifies the project structure by eliminating manual build configuration files that are no longer required when using SPM.

Sources, Supporting Files · high confidence

New RxKeyboard example app with iPhone X support

The example project has been reorganized and updated to demonstrate RxKeyboard usage in a modern chat-style interface. It now includes a message list view controller with a custom input bar that automatically adjusts its bottom margin to account for the keyboard and the iPhone X safe area. The code has been migrated to Swift 4 syntax and updated to use current RxSwift conventions.

Example/Sources · high confidence

Removal of local bundle configuration

The project no longer forces gem installation into a local vendor directory or disables shared gems. Users will now rely on the system's default bundle path and gem sharing behavior, which may affect how dependencies are stored and accessed during runtime.

.bundle · high confidence

Reorganized example project directory structure

The example project's supporting files, specifically Info.plist, have been moved from the Demo directory to the Example directory to reflect a reorganized project structure.

Example/Supporting Files · high confidence

Reorganized example project structure and assets

The example project has been moved from the root-level 'Demo' folder to an 'Example' directory, and the workspace file has been renamed from 'RxKeyboard.xcworkspace' to 'RxKeyboardExample.xcworkspace' to better reflect its contents. Additionally, the app icon asset catalog has been updated to remove the 20x20 point icon variants for iPhone, which are no longer required for modern iOS versions.

Example/Resources, Example/RxKeyboardExample.xcworkspace · high confidence

Reorganized example project structure and updated Xcode settings

The example application project has been restructured, moving the project file and workspace into a dedicated Example directory and updating the internal file references to reflect the new paths. Additionally, the Xcode project settings have been updated to reflect a newer toolchain version (LastSwiftUpdateCheck 0820, LastUpgradeCheck 1020), ensuring the example app remains compatible with current development environments.

Example/RxKeyboardExample.xcodeproj · high confidence

RxKeyboard refactors observable internals and adds protocol abstraction

The RxKeyboard library now exposes an RxKeyboardType protocol, allowing for easier mocking and testing of keyboard state. Internally, the implementation has been updated to use BehaviorRelay instead of Variable, and the calculation for visibleHeight now uses the keyboard frame's intersection with the screen bounds rather than the origin, which improves accuracy. Additionally, the willShowVisibleHeight observable has been refined to emit only when the keyboard is actually appearing, and the pan recognizer is now restricted to a single touch to prevent interference with other gestures.

Sources/RxKeyboard · high confidence

RxKeyboard v2.0.0 release with Swift 5.1 and RxSwift 6 support

This update introduces RxKeyboard version 2.0.0, upgrading the library to require Swift 5.1 and RxSwift 6.0. The release includes a new Travis CI configuration for automated testing and deployment, updates to the Carthage dependency specification, and a comprehensive rewrite of the README documentation to reflect the new requirements and usage patterns.

(repo-wide) · high confidence

Dependencies

Upgrade to RxSwift 6.0 and CocoaPods 1.10 with Swift 5.1 support

The library and its example project have been upgraded to use RxSwift 6.0 and RxCocoa 6.0, requiring Swift 5.1. The CocoaPods dependency has been updated from version 1.0 to 1.10, and the iOS deployment target for the podspec is set to 9.0. Additionally, the Gemfile now includes the \swiftproj\ gem and updates the bundled CocoaPods version, while the example project's Podfile has been restructured to include various UI helper libraries like SnapKit 5 and Then.

(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 50 → 50 (+0.2)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 46 → 46 (+0.0)
  • Readiness 31 → 31 (-0.1)
  • Security 70 → 80 (+10.1)

Resolved (3)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Outdated: cocoapods

New (1)

  • Outdated: rxswift

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

RxSwiftCommunity/RxKeyboard 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 0755848a9df22d051551520f3fb7c38ee4478f7d — 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.