Description
I thought it prudent to start an issue which can describe the necessary steps forward for releasing a SwiftUI compatible version of ReSwift.
At this time, I have a port of ReSwift in mjarvis/swiftui which conforms StoreType
to ObservableObject
. This allows for one to use @ObservedObject
or @EnvironmentObject
property wrappers to access a store, allowing direct usage of store.state.xyz
in view bodies.
There are a number of concerns that need to be taken care of before this branch can be released in a supported manner.
We can split off individual issues and a milestone for completing the work below after #1 is agreed upon.
1. Implementation
Is my choice of implementation ideal? Perhaps there are other options than making StoreType: ObservableObject
.
Maybe something around calling subscribe
to create a publisher from an injected store?
Do others have suggestions? Or just need to get approvals for existing implementation.
2. Backwards-compatibility
We need to determine how we will include this functionality in a general ReSwift release. It is important that we maintain backwards compatibility for UIKit
, and allow for bug fixes / feature release to continue for both paths.
3. Performance
Some general performance testing needs to be done to validate that this is an okay solution for a production environment.
Questions arise such as: How many/often state changes can occur before we overwhelm the SwiftUI diffing? Do we need to do some sort of diffing ourselves before?
4. Documentation & Examples
Documentation and examples need to be split and updated to account for UIKit vs SwiftUI paths.