
ReactiveCocoa
Swift extensions that let Apple UI controls and objects emit values over time, built on ReactiveSwift.
- Stars
- 19.8k
- Forks
- 3.4k
- Licence
- MIT
- Language
- Swift
- Last update
- 1.2 years ago
- Type
- Library
No commits in over a year — check for forks or alternatives before adopting.
What it is
ReactiveCocoa is a Swift library that wraps parts of Apple's Cocoa frameworks so UI elements, user actions and object changes can be treated as streams of values. It sits on top of ReactiveSwift, which supplies the core building blocks. Developers use it to connect UI state to data with bindings instead of manual update code.
- Bind a model property to a UILabel's text with the <~ operator
- Derive live character counts from a text field's changes
- Trigger a handler each time viewWillAppear is called
- Observe key-path changes through a SignalProducer
Great for
- iOS or macOS developers already using ReactiveSwift
- Teams wanting declarative bindings between data models and UI controls
- Developers maintaining an existing ReactiveCocoa codebase
Not ideal for
- Developers starting a new project who want minimal dependencies, since it requires ReactiveSwift alongside it
- Projects needing the Objective-C API, which the README points to the separate ReactiveObjC project for
- Beginners new to reactive programming, since the README assumes familiarity with ReactiveSwift concepts
How to get it
- 1
Install with a package manager
You'll need: Xcode · Swift Package Manager, CocoaPods or Carthage
Swift Package Manager dependency (add to Package.swift)
.package(url: "https://github.com/ReactiveCocoa/ReactiveCocoa.git", branch: "master")CocoaPods (add to Podfile)
pod 'ReactiveCocoa', '~> 10.1'Carthage (add to Cartfile)
github "ReactiveCocoa/ReactiveCocoa" ~> 10.1 - 2
Run it
- Add the dependency with your chosen package manager and import ReactiveCocoa and ReactiveSwift
- Bind a property to a UI control using the reactive namespace and the <~ operator
- Build and run your app to see the bound value update
- 3
Get the most out of it
- Read the in-code documentation and release notes, which the README recommends for details beyond its examples
- Use the ReactiveSwift documentation linked from the README to learn the core primitives first
- Use Action bindings for controls like buttons to connect UI events to view-model logic
- Check CHANGELOG.md when migrating from RAC 4.x
Downloads
Strengths
- Uses a consistent stream-based model across UI bindings, actions and key-path observation
- Supports several dependency managers including CocoaPods, Carthage and Swift Package Manager
- Active enough to have a recent release (12.0.0) and a repository pushed in September 2025
Trade-offs
- Requires understanding ReactiveSwift primitives, which adds a learning curve
- README lists older platform targets and a Swift 5.1 badge, so check current compatibility yourself
- Release binaries are not provided, so you install through a package manager or source
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| ReactiveCocoa (this) | 19.8k | Library | intermediate | 1.2 years ago | iOS or macOS developers already using ReactiveSwift |
| RxSwift | 24.6k | Library | intermediate | 2 months ago | Swift developers building iOS, macOS, tvOS, or watchOS apps who already handle many asynchronous events |
| Moya | 15.4k | Library | intermediate | 4 months ago | Swift developers building iOS or macOS apps that call web APIs |
| SDWebImage | 25.6k | Library | intermediate | 7 months ago | iOS or macOS app developers who need to show remote images in lists or grids |
| Kingfisher | 24.4k | Library | beginner | 4 days ago | iOS or macOS developers who need to show remote images in lists or detail screens |
| IQKeyboardManager | 16.6k | Library | beginner | 1 months ago | iOS app developers building forms or screens with several text inputs |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.