RxSwiftCommunity/RxKeyboard
50.2
Weak · 1 October 2026
559
lines of production code
Swift
primary language
2
measurements over time
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.