Skip to content

pteasima/Uniflo

Repository files navigation

Uniflo

A delightful SwiftUI companion.

!!! Here be dragons !!! This framework is very WIP. I only published it because Im using it to build an app. It can be seen in action here https://github.com/pteasima/Beta5Experiments, but that repo is a mess also and doesnt even use the Uniflo package dependency (just Uniflo source code). If you're interested in this, @me on twitter (https://twitter.com/pteasima). Seeing interest may motivate me to start properly maintaining it.

Uniflo is Redux

  • The Redux architecture goes well with SwiftUI.
  • AppState is the single source of truth for your application.

Uniflo is Elm

  • https://elm-lang.org is a programming language that extends Redux with managed side-effects.
  • Elm is a purely functional language.
  • Uniflo brings Elm-inspired functional concepts to Swift.

Uniflo is a DSL

  • Just like SwiftUI, Uniflo pushes new Swift 5.1 features to the limit.
  • Uniflo heavily favors concise syntax over expressivity or language consistency.
  • The framework is meant to be learned and used to its full extent, and is small and simple enough to allow this.
  • Some less strange APIs still exist in case you dont mind a bit of boilerplate for a more Swift native feel.

Uniflo is friends with SwiftUI

  • Your View must define a single property to support all the goodness.
  • No @State, no @ObservedObject. We take care of those.
  • ❌ Uniflo enables a modular codebase with support for master-detail flows.
  • ❌ Uniflo has a great UIKit compatibility story.

Uniflo is friends with dev and devteam

  • ⭕️ Uniflo apps are super testable.
  • ❌ A time-traveling debugger comes included.
  • Uniflo lets you achieve great consistency on a team.
  • Nazi corporate flows galore! Go write your lint rule that prevents push to git if one of the Actions' names doesn't start with "on". Go crazy, you know you want to.
  • ❌ Uniflo is tried and stable.

About

A delightful SwiftUI companion.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages