Skip to content

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
Step-by-step guide: how to use ReactiveCocoaInstall, first run, examples, tips and FAQs

How to get it

  1. 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. 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. 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

ProjectStarsTypeLevelUpdatedBest for
ReactiveCocoa (this)19.8kLibraryintermediate1.2 years agoiOS or macOS developers already using ReactiveSwift
RxSwift24.6kLibraryintermediate2 months agoSwift developers building iOS, macOS, tvOS, or watchOS apps who already handle many asynchronous events
Moya15.4kLibraryintermediate4 months agoSwift developers building iOS or macOS apps that call web APIs
SDWebImage25.6kLibraryintermediate7 months agoiOS or macOS app developers who need to show remote images in lists or grids
Kingfisher24.4kLibrarybeginner4 days agoiOS or macOS developers who need to show remote images in lists or detail screens
IQKeyboardManager16.6kLibrarybeginner1 months agoiOS 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.