# reswift/reswift

**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/reswift-reswift).**

7,594 stars · 520 forks · Swift · MIT

## Links

- GitHub: https://github.com/ReSwift/ReSwift
- Homepage: http://reswift.github.io/ReSwift/
- awesome-repositories: https://awesome-repositories.com/repository/reswift-reswift.md

## Description

ReSwift is a unidirectional data flow framework for Swift applications that centralizes state management within a single store. It ensures predictable and traceable updates by requiring all state modifications to occur through explicit actions processed by reducer functions.

The library includes a state time travel debugger that records and replays sequences of actions to reload or rewind the application state. It also provides an asynchronous action dispatcher to handle side effects and network requests while maintaining synchronized state updates.

The framework covers a broad surface of state management capabilities, including middleware for action dispatch interception, observer notifications for state broadcasting, and subscription filtering to optimize interface refreshes by mapping global state to specific sub-states.

## Tags

### Software Engineering & Architecture

- [Unidirectional Data Flow Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/unidirectional-data-flow-architectures.md) — Processes state updates in one direction by dispatching actions through reducers to prevent unpredictable mutations.
- [Centralized State Stores](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/centralized-state-stores.md) — Maintains the entire application state in a single immutable object tree as the primary source of truth. ([source](https://github.com/reswift/reswift#readme))
- [Action-Based State Transitions](https://awesome-repositories.com/f/software-engineering-architecture/action-based-state-transitions.md) — Restricts all data modifications to explicit action objects that describe what happened in the application.
- [Asynchronous Action Handlers](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/state-logic-and-utilities/asynchronous-action-handlers.md) — Provides utilities to execute background tasks and network requests as asynchronous operations within the state store. ([source](https://github.com/reswift/reswift#readme))
- [Pure State Transitions](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/state-logic-and-utilities/immutable-state-utilities/pure-state-transitions.md) — Transforms the current state into a new state by applying action-specific logic in isolated pure functions.
- [Headless Logic Decoupling](https://awesome-repositories.com/f/software-engineering-architecture/headless-logic-decoupling.md) — Implements the separation of business logic and state management from the visual rendering layers. ([source](http://reswift.github.io/ReSwift/master/getting-started-guide.html))
- [Action-Driven State Mutations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/action-driven-state-mutations.md) — Ensures all state modifications are triggered by processing discrete action objects to keep mutations predictable. ([source](http://reswift.github.io/ReSwift/))
- [Action Reducer Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/action-reducer-architectures/action-reducer-patterns.md) — Uses reducer functions to define how dispatched actions transform the current state into a new representation. ([source](http://reswift.github.io/ReSwift/master/getting-started-guide.html))
- [Unidirectional State Management](https://awesome-repositories.com/f/software-engineering-architecture/unidirectional-state-management.md) — Manages application data using a Redux-inspired flow to ensure predictable state transitions in Swift apps.
- [Action Replay Mechanisms](https://awesome-repositories.com/f/software-engineering-architecture/action-based-state-transitions/action-replay-mechanisms.md) — Records a chronological list of dispatched actions to allow replaying or rewinding the application state.
- [Action Dispatch Middleware](https://awesome-repositories.com/f/software-engineering-architecture/action-dispatch-middleware.md) — Wraps the dispatch process to execute side effects, logging, or asynchronous tasks before state updates.
- [State Change Subscriptions](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/state-change-subscriptions.md) — Reduces interface refreshes by notifying components only when relevant slices of the application state change.
- [UI State Change Notifications](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/state-change-subscriptions/state-change-broadcasting/ui-state-change-notifications.md) — Notifies registered observers of state transitions to ensure the user interface reflects the latest data. ([source](http://reswift.github.io/ReSwift/master/getting-started-guide.html))
- [State Synchronization Patterns](https://awesome-repositories.com/f/software-engineering-architecture/state-synchronization-patterns.md) — Notifies registered listeners when the central state changes to synchronize the user interface automatically.

### Mobile Development

- [Swift State Management Libraries](https://awesome-repositories.com/f/mobile-development/swift-state-management-libraries.md) — Provides a unidirectional data flow architecture for Swift applications that centralizes state and updates via explicit actions.

### Development Tools & Productivity

- [Time-Travel Debuggers](https://awesome-repositories.com/f/development-tools-productivity/time-travel-debuggers.md) — Records and replays sequences of actions to reload or rewind the application state for debugging.

### System Administration & Monitoring

- [Record and Replay Debugging](https://awesome-repositories.com/f/system-administration-monitoring/execution-history-auditors/reverse-execution-simulation/record-and-replay-debugging.md) — Records and replays sequences of actions to track state history and debug complex data flows.

### User Interface & Experience

- [Asynchronous](https://awesome-repositories.com/f/user-interface-experience/action-dispatchers/asynchronous.md) — Executes side effects and network requests while keeping state updates synchronized and predictable.
- [Partial State Selectors](https://awesome-repositories.com/f/user-interface-experience/partial-state-selectors.md) — Maps global state to smaller sub-states to restrict UI rebuilds to only when specific properties change.
- [State-Driven View Refreshing](https://awesome-repositories.com/f/user-interface-experience/state-driven-view-refreshing.md) — Automatically refreshes the user interface when the underlying application state changes. ([source](http://reswift.github.io/ReSwift/))
- [Middleware Interceptors](https://awesome-repositories.com/f/user-interface-experience/state-update-logic/state-action-value-updates/instance-scoped-action-dispatchers/action-dispatch-abstractions/middleware-interceptors.md) — Provides middleware to intercept the dispatch process for logging and executing side effects before state updates. ([source](http://reswift.github.io/ReSwift/master/getting-started-guide.html))

### Part of an Awesome List

- [Event Handling](https://awesome-repositories.com/f/awesome-lists/devtools/event-handling.md) — Unidirectional data flow implementation.
- [Reactive Programming](https://awesome-repositories.com/f/awesome-lists/devtools/reactive-programming.md) — Unidirectional data flow implementation for Swift.
