{"repo":"FluxorOrg/Fluxor","free":true,"listed":false,"github":"https://github.com/FluxorOrg/Fluxor","clone":"git clone https://github.com/FluxorOrg/Fluxor.git","description":"Unidirectional Data Flow in Swift 🚀 based on Combine 🚜","language":"Swift","stars":131,"topics":["data-flow","swift","combine","swiftui","redux"],"license":"MIT","category":"mobile-apps","readme_excerpt":"Unidirectional Data Flow in Swift - inspired by Redux and NgRx . Based on Combine - ideal for use with SwiftUI . Why do I need Fluxor? When developing apps, it can quickly become difficult to keep track of the flow of data. Data flows in multiple directions and can easily become inconsistent with Multiple Sources of Truth . With Fluxor, data flows in only one direction, there is only one Single Source of Truth , updates to the state are done with pure functions, the flow in the app can easily be followed, and all the individual parts can be unit tested separately. How does it work? Fluxor is made up from the following types: Store contains an immutable state (the Single Source of Truth ). Action s are dispatched on the Store to update the state. Reducer s gives the Store a new state based on the Actions dispatched. Selector s selects (and eventually transform) part(s) of the state to use (eg. in views). Effect s gets triggered by Actions , and can perform async task which in turn can dispatch new Actions . Interceptor s intercepts every dispatched Action and state change for easier debugging. Installation Fluxor can be installed as a dependency to your project using Swift Package Manager, by simply adding https://github.com/FluxorOrg/Fluxor.git . Requirements - iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 6.0+ / Linux - Xcode 11.4+ / Swift 5.2+ Usage As a minimum, an app using Fluxor will need a Store , an Action , a Reducer , a Selector and a state. Here is a setup where ","default_branch":null,"files":null,"tree":[],"storefront":"/r/FluxorOrg","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/FluxorOrg/Fluxor/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}