A powerful, minimal and composable architecture for building reactive iOS apps with SwiftUI or UIKit

Overview

SourceArchitecture

A simple yet powerful framework for reactive programming with only a minimal optimized set of types. Sources are self-contained, highly testable objects which manage and update some function-specific state. Sources can be chained, their values can be transformed and they can easily be composed together into more complex Sources.

Sources can automatically drive updates to both SwiftUI and UIKit views / view controllers using just one implementation.

You might also like...
🟣 Verge is a very tunable state-management engine on iOS App (UIKit / SwiftUI) and built-in ORM.
🟣 Verge is a very tunable state-management engine on iOS App (UIKit / SwiftUI) and built-in ORM.

Verge.swift đź“Ť An effective state management architecture for iOS - UIKit and also SwiftUI đź“Ť _ An easier way to get unidirectional data flow _ _ Supp

Sample iOS application in SwiftUI presenting Redux architecture
Sample iOS application in SwiftUI presenting Redux architecture

SwiftUI-Redux-Demo Sample iOS application in SwiftUI presenting Redux architecture. My full article about Redux in detail you will find here: Redux ar

Eazy is the missing piece in your SwiftUI and UIKit application.

Eazy is the missing piece in your SwiftUI and UIKit application. It aims at harmonizing how your views communicate with the model and vice versa in a clear and consistent way. Eazy can be used on any Apple platform.

đź’Ž Redux like architecture for SwiftUI
đź’Ž Redux like architecture for SwiftUI

Simple Architecture like Redux Installation SPM dependencies: [ .package(url: "https://github.com/gre4ixin/ReduxUI.git", .upToNextMinor(from: "1.0

🎌 Powerful navigation library for iOS based on the coordinator pattern
🎌 Powerful navigation library for iOS based on the coordinator pattern

⚠️ We have recently released XCoordinator 2.0. Make sure to read this section before migrating. In general, please replace all AnyRouter by either Uno

Unidirectional State Management Architecture for Swift - Inspired by Vuex and Flux
Unidirectional State Management Architecture for Swift - Inspired by Vuex and Flux

Unidirectional State Management Architecture for Swift - Inspired by Vuex and Flux Introduction VueFlux is the architecture to manage state with unidi

UIKitPreviews - A simple way to see your UIKit ViewController changes live and on-demand
UIKitPreviews - A simple way to see your UIKit ViewController changes live and on-demand

SwiftUI preview provider for UIKit A simple way to see your UIKit ViewController

Redux for Swift - a predictable state container for Swift apps

Merge / deprecation announcement: ReduxKit and Swift-Flow have joined forces! The result is ReSwift. The nitty gritty: We decided to deprecate ReduxKi

Netflix Onboarding made with SwiftUI
Netflix Onboarding made with SwiftUI

OnBoardSwiftUI-Netflix Netflix Onboarding made with SwiftUI.

Comments
  • Minor refinements

    Minor refinements

    • Removed Source(wrappedValue:) initializer to encourage injection and get correct memberwise initializer parameter
    • Made ActionExecution the output for the ActionExecution.errors Publisher to send along full information
    • Added a Error? property to ActionExecution
    • Action’s callAsFunction method’s ifUnavailable closure we updated to return a Bool that indicates whether the error should also propagate to the ActionExecution.errors publisher or not
    • Updated to have FilePersistence and UserDefaultsPersistence APIs and their respective Descriptor match each other and match CachePersistence’s API and Descriptor
    • Made Persistable.Found’s isExpired property a Bool instead of a closure that returns a Bool to simplify, since a new value is sent on expiration anyway
    • Updated ifUnavailable closures when invoking Actions to receive the full ActionExecution instance in order to capture the input as well as any error
    • Made Source’s subscribe method return a discardable return type of the instance of the Source itself. This allows assigning and subscribing in a single expression, e.g. _source = source.subscribing(self, method: method)
    • Made small cleanups to sample code syntax
    • Implemented workaround for iOS 16 SwiftUI scrollTo() crash in ToDoList example apps
    • Added some doc comments for DataConvertible, Connectable, ConnectableWithPlaceholder, FileDescriptor and UserDefaultsDescriptor
    opened by daniel-hall 1
  • New tutorial app(LocalToDoList) & framework tweaks

    New tutorial app(LocalToDoList) & framework tweaks

    • Updated file and user defaults resource opportunistic saving logic
    • Simplified API for getting actions in a Source, from state.action(.actionName) to state.actionName
    opened by daniel-hall 0
Owner
Daniel Hall
Working on great user experiences and the frameworks & tools to build them faster
Daniel Hall
Reactive Keyboard in iOS

RxKeyboard RxKeyboard provides a reactive way of observing keyboard frame changes. Forget about keyboard notifications. It also perfectly works with U

RxSwift Community 1.4k Dec 29, 2022
Reactive Programming in Swift

Rx is a generic abstraction of computation expressed through Observable<Element> interface, which lets you broadcast and subscribe to values and other

ReactiveX 23.1k Jan 5, 2023
A reactive wrapper built around UIImagePickerController.

RxMediaPicker RxMediaPicker is a RxSwift wrapper built around UIImagePickerController consisting in a simple interface for common actions like picking

RxSwift Community 180 Apr 24, 2022
A Swift Reactive Programming Kit

ReactiveKit is a lightweight Swift framework for reactive and functional reactive programming that enables you to get into the reactive world today. T

Declarative Hub 1.2k Dec 29, 2022
RxSwift reactive wrapper for view gestures

RxGesture Usage To run the example project, clone the repo, in the Example folder open RxGesture.xcworkspace. You might need to run pod install from t

RxSwift Community 1.3k Dec 30, 2022
Reactive WebSockets

RxWebSocket Reactive extensions for websockets. A lightweight abstraction layer over Starscream to make it reactive. Installation RxWebSocket is avail

Flávio Caetano 57 Jul 22, 2022
RxReduce is a lightweight framework that ease the implementation of a state container pattern in a Reactive Programming compliant way.

About Architecture concerns RxReduce Installation The key principles How to use RxReduce Tools and dependencies Travis CI Frameworks Platform Licence

RxSwift Community 125 Jan 29, 2022
A Swift framework for reactive programming.

CwlSignal An implementation of reactive programming. For details, see the article on Cocoa with Love, CwlSignal, a library for reactive programming. N

Matt Gallagher 304 Oct 25, 2022
Swift Reactive Programming.

ReactKit Swift Reactive Programming. How to install See Wiki page. Example For UI Demo, please see ReactKit/ReactKitCatalog. Key-Value Observing // cr

ReactKit 1.2k Nov 6, 2022
Dynamic and type-safe framework for building linear and non-linear flows.

FlowKit FlowKit is a dynamic flow framework capable of building a flow, based on conditions and ordered according to a logic of next steps. By using F

N26 55 Dec 20, 2022