CypherPoetReduxUtils
A collection utilities for architecting SwiftUI apps in the Redux/Elm style of Reducers, Actions, Side Effects and Middlewares.
Installation
Xcode Projects
Select File
-> Swift Packages
-> Add Package Dependency
and enter https://github.com/CypherPoet/CypherPoetReduxUtils
.
Swift Package Manager Projects
You can add CypherPoetReduxUtils
as a dependency in your Package.swift
file:
let package = Package(
//...
dependencies: [
.package(url: "https://github.com/CypherPoet/CypherPoetReduxUtils", from: "0.2.1"),
],
//...
)
Then simply import CypherPoetReduxUtils
wherever you’d like to use it.
Usage
The goal of these utilities is to serve as primitives for architecting SwiftUI apps in the Redux/Elm style of Reducers, Actions, Side Effects and Middlewares.
🔑 Check out the main Example App to see how it composes different types of app State
into an app Store
, initializes a root store as a @StateObject
and injects it into into views as an @EnvironmentObject
, and then sends actions to the store as a response to events in the UI.
Core Concepts
- 🔑 An app
Store
is a composition ofState
slices — each governed by aReducer
that knows how to listen for a set of dispatchedAction
s.
Contributing
There aren't many to-dos here at the moment, but feedback and suggestions are certainly not discouraged. Check out some of the issue templates for more info.
Developing
Requirements
- Xcode 12.0+
Generating Documentation
Documentation is generated by Jazzy. Installation instructions can be found here, and as soon as you have it set up, docs can be generated simply by running jazzy
from the command line.
📝 Note that this will only generate a docs
folder for you to view locally. This folder is being ignored by git
, as an action exists to automatically generate docs and serve them on the project's gh-pages
branch.
Acknowledgments
This project wouldn't be possible without several enlightening projects, articles, and tutorials by others in the Swift community who latched onto using these patterns in SwiftUI. Here are just a few of its main inspirations:
- Redux-like state container in SwiftUI by @mecid.
- Redux-like architecture with SwiftUI by @afterxleep.
- SwiftUI-Redux by @kitasuke.
- The Composable Architecture
License
CypherPoetReduxUtils
is available under the MIT license. See the LICENSE file for more info.