Releases: ReactiveCocoa/reactiveswift-composable-architecture
Releases · ReactiveCocoa/reactiveswift-composable-architecture
0.18.1
Fixed: Added back @discardableResult
to Store.ifLet
which was removed by mistake during conflict resolution for 0.18.0 🙈
0.18.0
- Updated:
Disposable
s inStore
andViewStore
are now managed explicitly (thanks @maximkrouk). - Improved:
ViewStore.produced
now allows chaining of key paths instead of only supporting a single level (thanks @maximkrouk).
From the upstream 0.18.0 release:
- Updated:
IfLetStore
andForEachStore
closures are now view builders. - Changed:
IfLetStore
's optional else branch now takes a view builder closure. The overload that takes an else view directly has been deprecated. - Fixed: A crash related to behavior in SwiftUI's
ForEach
has been fixed, where theIdentifiedArray
version ofForEachStore
would unsafely unwrap elements after removal. - Improved: documentation for
Store.ifLet
. - Infrastructure: improve UIKit demo support of dark mode (thanks @hungtruong).
0.17.0
From the upstream 0.17.0 release:
- Added:
Effect.failing
, an effect that will cause anXCTest
assertion failure if it is subscribed to. - Added: A new
ViewStore
convenience initializer forVoid
state (thanks @siejkowski). - Changed: Updated
TestStore
to support an imperative DSL. - Changed: The
fireAndForget()
method is now more permissive. It will now ignore all output and failure for you before upcasting the output and failure types to any type. - Changed:
TextState
now has a custom debug output format for easier debugging. - Infrastructure: various documentation improvements and fixes for TicTacToe.
In addition:
- Added:
DateScheduler
conformance forImmediateScheduler
to allow it to be used in tests where aDateScheduler
is expected.
0.16.0
- Added: extensions to the ReactiveSwift
Scheduler
andDateScheduler
protocols to support the.animation()
and.transaction()
APIs that were added in CombineSchedulers, in order to have the same SwiftUI animation support with ReactiveSwift schedulers.
From the upstream 0.16.0 release:
- Changed:
Reducer.optional
reducers no longer triggerassertionFailure
s. Instead, by default they set a breakpoint that can be resumed inDEBUG
mode. This breakpoint can be disabled with an argument.RELEASE
builds remain unaffected. (#296) - Changed: Test Stores now collocate unfinished effect failures with the originating action that kicked each effect off. These failures were previously aggregated to the unrelated line in which
store.assert
was called. (#413) - Infrastructure: Improved documentation (thanks @Steven0351).
From the upstream 0.15.0 release:
- Added: A new
ViewStore.send(_:animation:)
helper for SwiftUI, which wraps an action in awithAnimation
block.
0.14.0
Releases 0.12.0 and 0.13.0 were skipped to stay in sync with the main TCA repo.
- Added: First-class forms support via
BindingAction
andReducer.binding
. - Added:
.sequence(Step)
toStepType
for more composable testing (thanks @heyltsjay) - Changed: replacing an identified array's element with one that has a mismatched id will now fatal error in debug builds.
- Changed: Improved performance of
ForEachStore
. - Fixed: worked around a Xcode 12.5 beta compilation error.
- Infrastructure: fleshed out
Store.scope
documentation.
Contributions are by @mbrandonw or @stephencelis unless mentioned otherwise.
0.11.0
In order for the releases to stay in sync with TCA we skipped 0.10.0. This release includes the changes from 0.10.0 from TCA.
- Added: WithViewStore now conforms to Scene and can be used in App.body content.
- Added: TextState, a testable, equatable description of SwiftUI Text. Useful for when you want to store dynamic, stylized text in your app's state.
- Changed: AlertState and ActionSheetState now use TextState under the hood.
- Fixed: a few Test Store failure messages were reporting the wrong debug information. They have been fixed.
- Fixed: view store-derived bindings that do not have animation modifiers applied will not properly animated when mutated explicitly in withAnimation.
- Fixed: documentation improvements (thanks @nspavlo, @SteinerHannes, @mluisbrown).x
- Fixed: AlertState and ActionSheetState can once again be used with verbatim strings (thanks @ohitsdaniel).
- Fixed: Re-publicized AlertState.Button.type.
- Deprecated: AlertState and ActionSheetState initializers that take LocalizedStringKey. Migration path: use the initializers that take explicit TextState instead (which can be initialized with both LocalizedStringKey and verbatim Strings).
0.9.0
- Removed ComposableCoreLocation and ComposableCoreMotion. The ReactiveSwift compatible versions of these are, for now, unavailable.
Changes from the upstream repo:
- Rename producer-transforming scope.
- Voice Memos Fixes.
- Use serial queue for Tic Tac Toe authorization
- Small fix to TestStore.
0.8.1
Linux Support 🎉
- Adds support for Linux and Android.
- Only import Combine and SwiftUI when the can be imported.
0.8.0
Changes from the upstream 0.8.0 release:
- Improved: better error messaging around testing uncompleted effects: it will now print the action the effect was kicked off from (thanks @mackoj).
- Bug fix: fixed identified array implementations of shuffle, reverse (thanks @jeffersonsetiawan).
- Bug fix: test stores should now perform effects in the same order as a live store.
- Infrastructure: better document TCA acronym.
- Infrastructure: document Apple bug with WithViewStore and ScrollViewReader.
- Infrastructure: fix recursive higher-order reducer demo to map its effects recursively.
- Infrastructure: Xcode 12 CI.
Plus PRs since 0.8.0:
- Improved: Test Store ergonomics: pointfreeco/swift-composable-architecture#285
- Improved: Buffer actions when sent recursively: pointfreeco/swift-composable-architecture#287
- Bug fix: fix TicTacToe Optional bug: pointfreeco/swift-composable-architecture#291
Thanks to @stephencelis and @mbrandonw