Skip to content
SwiftUI & Combine app using MovieDB API. With a custom Flux (Redux) implementation.
Branch: master
Clone or download
Latest commit f17a6e9 Jul 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
MovieSwift Optimisations Jul 20, 2019
images Fix image Jun 27, 2019
sketches New icon Jun 23, 2019
.gitignore Refactore AppState to AppStore, and wrap the State in a struct Jun 21, 2019
LICENSE Create LICENSE Jul 20, 2019
Readme.md Cleanup + fix readme Jul 17, 2019

Readme.md

MovieSwiftUI

MovieSwiftUI is an application that uses the MovieDB API and is built with SwiftUI. It demos some SwiftUI (& Combine) concepts. The goal is to make a real world application using SwiftUI only. It'll be updated with new features as they come to the SwiftUI framework.

App Image

Architecture

MovieSwiftUI data flow is a subset and a custom implementation of the Flux part of Redux. It implement the State as a BindableObject and publish changes whenever a dispatched action produces a new state after being reduced. The state is injected as an environment object in the root view of the application, and is easily accessible anywhere in the application. SwiftUI does all aspects of diffing on the render pass when your state changes. No need to be clever when extracting props from your State, they're simple dynamic vars at the view level. No matter your objects' graph size, SwiftUI speed depends on the complexity of your views hierarchy, not the complexity of your object graph.

SwiftUI

MovieSwiftUI is in pure Swift UI, the goal is to see how far SwiftUI can go in its current implementation without using anything from UIKit (basically no UIView/UIViewController representable).

It'll evolve with SwiftUI, every time Apple edits existing or adds new features to the framework.

Platforms

Currently MovieSwiftUI runs on iPhone, iPad, and macOS.

Follow me on Twitter to get the latest update about features, code and SwiftUI tips and tricks!

You can’t perform that action at this time.