# reactivecocoa/reactivecocoa

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/reactivecocoa-reactivecocoa).**

19,835 stars · 3,418 forks · Swift · MIT

## Links

- GitHub: https://github.com/ReactiveCocoa/ReactiveCocoa
- awesome-repositories: https://awesome-repositories.com/repository/reactivecocoa-reactivecocoa.md

## Description

ReactiveCocoa is a functional reactive programming framework and Cocoa UI binding layer. It provides a library for composing asynchronous data streams and managing application state through signals and functional operators.

The framework functions as an Objective-C data binding library that links object properties and method calls to reactive streams using runtime dynamism and swizzling. It includes a utility to convert traditional key-value observation notifications into composable streams for synchronized state tracking.

The project covers reactive UI programming by connecting interface elements to asynchronous data streams and capturing user interactions. It enables reactive state management and asynchronous event handling by using primitive building blocks to define model logic.

## Tags

### Software Engineering & Architecture

- [UI Data Binding](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/observer-patterns/ui-data-observers/ui-data-binding.md) — Synchronizes Cocoa interface elements with underlying data models using reactive observer patterns and data binding. ([source](https://github.com/reactivecocoa/reactivecocoa#readme))
- [UI Data Observers](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/observer-patterns/ui-data-observers.md) — Uses reactive patterns to synchronize interface elements with application state changes via property observers.
- [Functional Reactive Programming Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/functional-reactive-programming-frameworks.md) — Provides a comprehensive framework for composing asynchronous data streams using functional operators and signals.
- [Push-Based Data Propagation](https://awesome-repositories.com/f/software-engineering-architecture/push-based-data-propagation.md) — Implements a push-based notification mechanism to distribute data changes from producers to multiple observers in real time.
- [Reactive State Management](https://awesome-repositories.com/f/software-engineering-architecture/reactive-state-management.md) — Provides systems for managing application state using reactive primitives and composable building blocks.
- [Reactive Composition Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/reactive-composition-patterns.md) — Implements functional reactive patterns and composable primitives to manage application state and model logic.
- [Property Change Observers](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/change-detection/property-change-observers.md) — Monitors changes to specific object properties using property-level change observers wrapped in streams. ([source](https://github.com/reactivecocoa/reactivecocoa#readme))
- [Reactive KVO Adapters](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/change-detection/property-change-observers/reactive-kvo-adapters.md) — Includes adapters that convert traditional Key-Value Observation notifications into composable reactive streams.
- [Declarative Stream Logic](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/engineering-best-practices/code-craftsmanship-standards/composable-logic-patterns/declarative-stream-logic.md) — Allows the definition of model logic using composable building blocks and unified asynchronous streams. ([source](https://github.com/reactivecocoa/reactivecocoa#readme))
- [Method Interception Proxies](https://awesome-repositories.com/f/software-engineering-architecture/method-interception-proxies.md) — Provides dynamic proxy systems to intercept Objective-C method calls and generate data streams for analysis. ([source](https://github.com/reactivecocoa/reactivecocoa#readme))

### User Interface & Experience

- [Reactive UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/reactive-ui-frameworks.md) — Offers a framework for building user interfaces that automatically update in response to asynchronous data streams.
- [Event-Driven State Synchronizers](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/event-driven-state-synchronizers.md) — Propagates data model changes to the Cocoa UI via reactive event streams for state synchronization. ([source](https://github.com/reactivecocoa/reactivecocoa#readme))
- [Signal-Based Reactivity](https://awesome-repositories.com/f/user-interface-experience/signal-based-reactivity.md) — Utilizes signal-based reactivity to track state and trigger targeted updates to the user interface.

### Part of an Awesome List

- [Functional Reactive Programming](https://awesome-repositories.com/f/awesome-lists/devtools/functional-reactive-programming.md) — Implements a comprehensive framework for asynchronous, streaming, and functional reactive programming.
- [Data Bindings](https://awesome-repositories.com/f/awesome-lists/devtools/objective-c-runtime/data-bindings.md) — Implements automatic state synchronization by linking Objective-C object properties and methods to reactive streams via runtime dynamism.
- [Runtime Swizzling](https://awesome-repositories.com/f/awesome-lists/devtools/objective-c-runtime/runtime-swizzling.md) — Intercepts method calls and object lifecycle events by modifying the Objective-C runtime dispatch table.
- [Development Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/development-frameworks.md) — Functional reactive programming framework for event-driven development.
- [Event Handling](https://awesome-repositories.com/f/awesome-lists/devtools/event-handling.md) — Framework for functional reactive programming.
- [Reactive Programming](https://awesome-repositories.com/f/awesome-lists/devtools/reactive-programming.md) — Streams of values over time for reactive programming.

### Data & Databases

- [Asynchronous Streams](https://awesome-repositories.com/f/data-databases/typed-data-collections/sequence-management/asynchronous-streams.md) — Provides interfaces for producing and consuming asynchronous sequences of data over time. ([source](https://github.com/reactivecocoa/reactivecocoa#readme))

### Programming Languages & Runtimes

- [Data Binding Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/language-specific-resources/apple-platform-languages/objective-c-libraries/data-binding-libraries.md) — Functions as a data binding library linking Objective-C properties to reactive streams through runtime swizzling.
- [Dynamic Dispatch](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/language-extensions/dynamic-dispatch.md) — Leverages Objective-C dynamic dispatch to bind properties and methods to reactive streams at runtime.
- [Reactive Runtime Bindings](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/language-extensions/dynamic-dispatch/reactive-runtime-bindings.md) — Links object properties and methods to reactive streams using Objective-C runtime dynamism without modifying class definitions.

### Web Development

- [Functional Stream Transformations](https://awesome-repositories.com/f/web-development/request-body-handling/functional-stream-transformations.md) — Provides functional operators to filter, throttle, and merge asynchronous data streams for complex value transformations.

### Graphics & Multimedia

- [User Interaction](https://awesome-repositories.com/f/graphics-multimedia/immersive-interactive-systems/user-interaction.md) — Captures and processes user input events and control changes as reactive data streams. ([source](https://github.com/reactivecocoa/reactivecocoa#readme))
