Releases: pointfreeco/swift-composable-architecture
Releases · pointfreeco/swift-composable-architecture
0.16.0
- 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).
0.15.0
- Added: A new
ViewStore.send(_:animation:)
helper for SwiftUI, which wraps an action in awithAnimation
block. - Added: TestStore steps can now group a series of steps together into a single
.sequence
step.
0.14.0
-
Changed:
FormAction
andReducer.form
have been renamed toBindingAction
andReducer.binding
based on community feedback and the more general, non-form-based use cases. Migration path:FormAction
andReducer.form
have been deprecated and Xcode can automatically migrate them to their newer names.// before: enum SettingsAction { case form(FormAction<SettingsState>) } let settingsReducer = Reducer< SettingsState, SettingsAction, SettingsEnvironment > { state, action, environment in switch action { ... case .form: return .none } } . form(action: /SettingsAction.form) TextField( "Display name", text: viewStore.binding(keyPath: \.displayName, send: SettingsAction.form) ) // after: enum SettingsAction { case binding(BindingAction<SettingsState>) } let settingsReducer = Reducer< SettingsState, SettingsAction, SettingsEnvironment > { state, action, environment in switch action { ... case .binding: return .none } } .binding(action: /SettingsAction.binding) TextField( "Display name", text: viewStore.binding(keyPath: \.displayName, send: SettingsAction.binding) )
0.13.0
Quick turnaround for this release. Should have waited for Xcode 12.5 to download 😅
- Changed: replacing an identified array's element with one that has a mismatched id will now fatal error in debug builds.
- Fixed: worked around a Xcode 12.5 beta compilation error.
- Infrastructure: fleshed out
Store.scope
documentation.
0.12.0
- Added: First-class forms support via
FormAction
andReducer.form()
. - Fixed: Re-publicized
AlertState.Button.type
.
0.11.0
- Added:
TextState
, a testable, equatable description of SwiftUIText
. Useful for when you want to store dynamic, stylized text in your app's state. - Changed:
AlertState
andActionSheetState
now useTextState
under the hood. - Fixed: worked around a bug affecting iOS 13.0-13.2 that prevented state changes from being reflected in the view (thanks @nsillik).
- Fixed:
AlertState
andActionSheetState
can once again be used with verbatim strings (thanks @ohitsdaniel). - Deprecated:
AlertState
andActionSheetState
initializers that takeLocalizedStringKey
. Migration path: use the initializers that take explicitTextState
instead (which can be initialized with bothLocalizedStringKey
and verbatimString
s).
0.10.0
- Added:
WithViewStore
now conforms toScene
and can be used inApp.body
content. - Changed:
Store.scope
's less commonly used overload that transforms publishers ofStore
s has been deprecated and renamed topublisherScope
. - 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 inwithAnimation
. - Fixed: documentation improvements (thanks @nspavlo, @SteinerHannes, @mluisbrown).x
- Infrastructure: better support dark mode in the Voice Memos demo (thanks @willisplummer).
- Infrastructure: use serial queue in Tic Tac Toe demo.
0.9.0
- Improved: test stores can now call throwing code in assert step closures.
- Fixed: stores now buffer actions that are sent recursively.
- Infrastructure: fixed Tic Tac Toe demo bug.
- Infrastructure: fixed LocalizedStringKey test (thanks @mluisbrown).
- Removed ComposableCoreLocation and ComposableCoreMotion. They now live at https://github.com/pointfreeco/composable-core-location and https://github.com/pointfreeco/composable-core-motion
0.8.0
- 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
andScrollViewReader
. - Infrastructure: fix recursive higher-order reducer demo to map its effects recursively.
- Infrastructure: Xcode 12 CI.
0.7.0
- Changed:
LocationManager
mock initializers now take the correct, optional signature for thelocation
dependency (thanks @mackoj ). - Changed:
Reducer.optional
is now a method so that its assertions can include file/line context (thanks @alexito4). Theoptional
property has been deprecated in favor of the method. - Changed: previously-deprecated interfaces have been obsoleted.
- Bug fixed:
Store.ifLet
no longer evaluates theelse
branch too often (thanks @mluisbrown). - Bug fixed: more than one alert can now be presented in a row, as can more than one action sheet.
- Infrastructure: documentation fixes (thanks @jasdev, @artnest, @mmatoszko).
- Infrastructure:
Store.ifLet
can take advantage of ascope
overload (thanks @fonkadelic). - Infrastructure: fixed Voice Memos bug around deleting a memo that is playing.
- Infrastructure: new demo for tvOS focus.
- Infrastructure: added key frame effect to animation demo (thanks @boudavid).
- Infrastructure: fixed Tic-Tac-Toe demo bug around error display (thanks @heiberg).