A Elm-like framework for building SwiftUI based apps. Influenced by Pointfree Co's The Composable Architecture, Redux, and Elm.
It changes at my whim, and is almost always in a state of a rewrite as I explore
new ideas. As a result, the most recent is main
, not any tagged release.
Currently AppStateKit leverages Swift macros to build Elm-like Components and automatically compose them together. Components combine the reducer and the view together in one type, while keeping the reducer testable apart from the view.
- Swift 5.9 or greater
- iOS/tvOS 17 or greater OR macOS 14 or greater
Currently, AppStateKit is only available as a Swift Package.
Open the Package.swift file and edit it:
- Add AppStateKit repo to the
dependencies
array. - Add AppStateKit as a dependency of the target that will use it
// swift-tools-version:5.9
import PackageDescription
let package = Package(
// ...snip...
dependencies: [
.package(url: "https://github.com/andyfinnell/AppStateKit.git", branch: "main")
],
targets: [
.target(name: "MyTarget", dependencies: ["AppStateKit"])
]
)
Then build to pull down the dependencies:
$ swift build
Use the Swift Packages tab on the project to add AppStateKit:
- Open the Xcode workspace or project that you want to add AppStateKit to
- In the file browser, select the project to show the list of projects/targets on the right
- In the list of projects/targets on the right, select the project
- Select the "Swift Packages" tab
- Click on the "+" button to add a package
- In the "Choose Package Repository" sheet, search for "https://github.com/andyfinnell/AppStateKit.git"
- Click "Next"
- Choose the
main
branch rule - Click "Next"
- Choose the target you want to add AppStateKit to
- Click "Finish"