Releases: pointfreeco/swift-composable-architecture
1.8.0
What's Changed
See Migrating to 1.8 for more details.
-
Added: New
@Reducer
macro features (#2795).The
@Reducer
macro has been enhanced to streamline usage and simplify some common patterns:-
When left undefined, the
@Reducer
will now define default implementations ofState
,Action
, andbody
. This means stubbing a feature is as simple as@Reducer struct Feature {}
. -
@Reducer
can now be used with enums to simplify the boilerplate associated with "destination" and "path" reducers.
See the 1.8 migration guide for more information on how to use these APIs.
-
-
Fixed: Propagate
@ViewAction
macro availability (#2785). -
Fixed: Properly tag nested observable enums so that changes to non-observable cases are better observed (#2786).
-
Infrastructure: Fix typo in migration guide 1.6 (thanks @takehilo, #2779); better document explicit
id
with scopedForEach
(#2784); Fix typo in the 1.7 migration guide (thanks @yaslab, #2780; thanks @Ryu0118, #2790);
Full Changelog: 1.7.2...1.8.0
New Contributors
Full Changelog: 1.7.3...1.8.0
1.7.3
What's Changed
- Fixed: Fix navigationDestinationWrapper in docs in #2765
- Infrastructure: Clean up examples in #2754
- Infrastructure: Simplify Stack Navigation Demo in #2758
- Infrastructure: Some cleanup in #2759
- Infrastructure: remove invalid newlines by @hmhv in #2763
- Infrastructure: Update warning for uncached stores in #2764
- Infrastructure: Add TCAComposer to Companion libraries. by @scogeo in #2768
Full Changelog: 1.7.2...1.7.3
1.7.2
What's Changed
- Fixed: A visionOS build regression introduced in 1.7.1 has been fixed (thanks @peterbohac, #2746).
- Fixed: visionOS-related warnings around observation have been fixed (#2752).
- Infrastructure: CI now runs against visionOS (#2747).
New Contributors
- @peterbohac made their first contribution in #2746
Full Changelog: 1.7.1...1.7.2
1.7.1
What's Changed
- Fixed: The Composable Architecture's SwiftUI Binding helpers should better preserve SwiftUI animation and transaction information (#2740). Previously, animations could be lost in certain situations.
- Fixed:
@ObservableState
now supports thepackage
access modifier (thanks @nnsnodnb, #2741). - Deprecated:
Reducer.onChange(of:removeDuplicates:)
has been deprecated (#2744). TheremoveDuplicates
argument put strain on the compiler that could cause reducers to not compile in time. Migration strategy: use an explicit wrapper type that isEquatable
, instead. - Infrastructure: Migrating to 1.7 fixes (thanks @acosmicflamingo, #2732; thanks @bricklife, #2736; thanks @zvona031, #2738; thanks @shgew; #2743); README fix (thanks @yimajo, #2734).
New Contributors
- @acosmicflamingo made their first contribution in #2732
- @zvona031 made their first contribution in #2738
- @shgew made their first contribution in #2743
- @nnsnodnb made their first contribution in #2741
Full Changelog: 1.7.0...1.7.1
1.7.0
What's Changed
See Migrating to 1.7 for more details.
- Added: Observation support (#2593), which both streamlines and soft-deprecates many concepts in the Composable Architecture. See the 1.7 migration guide for more information on how to apply these updates to your applications.
- Infrastructure: Add CI for Swift 5.7.1 (#2701).
- Infrastructure: Add docs for testing
StackAction
's case path subscript (thanks @lukeredpath, #2704). - Infrastructure: Fixed examples CI (#2715).
- Infrastructure: Fixed
TestStore.assert
docs (#2720). - Infrastructure: Use
XCTExpectFailure
fromXCTestDynamicOverlay
(#2721). - Infrastructure: Documentation typo fix (thanks @JonCox, #2723).
- Infrastructure: Fixed concurrency docs (thanks @hmhv, #2726).
- Infrastructure: Fixed composing features tutorial (thanks @bricklife, #2698; thanks @Kyome22, #2727).
- Infrastructure: Fixed 1.7 migration guide (thanks @Ryu0118, #2731).
New Contributors
Full Changelog: 1.6.0...1.7.0
1.6.0
What's Changed
See Migrating to 1.6 for more details.
- Added:
TestStore.receive(\.action, payload)
for asserting against the payload of an action without requiring the action itself beEquatable
(#2669; #2691) - Fixed: It was possible for
ViewStore
s to ping theirobjectWillChange
publisher during a body computation, triggering a SwiftUI warning. This has been fixed (#2688). - Fixed:
@Reducer
macro no longer automatically applies@CasePathable
macro to enums with explicit conformance (thanks @scogeo, #2685). - Fixed: The
prepareDependencies
closure is now only performed a single time when creating a store, not every single time an action is received (#2695). - Fixed: A retain cycle in
PresentationModifier
has been fixed (#2697). - Performance: Clean up parent/child store invalidation checks (#2674).
- Infrastructure: Fix package build in 5.7 for SPI (#2675; thanks @finestructure, #2679).
- Infrastructure: Typo fix (thanks @tomokisun, #2678).
- Infrastructure: Add documentation around new store scoping characteristics (#2676).
- Infrastructure: Prevent unnecessary tutorial diffs (thanks @bricklife, #2692).
- Infrastructure: Tutorial fixes (#2693).
- Infrastructure : Clean up shared state case study (#2696).
New Contributors
- @bricklife made their first contribution in #2692
Full Changelog: 1.5.6...1.6.0
1.5.6
What's Changed
Important
While this release contains no additions or breaking changes to the Composable Architecture's APIs, the Store.scope
operation has been significantly refactored for performance. While we have vetted these changes in our own test suites and applications, and have worked with members of the community to test these changes before this release, please thoroughly test the view layer of your applications after upgrading to this version, and before releasing your application to production.
See #2664 for more details on the change.
- Performance: Overhaul store scope communication (#2664).
- Infrastructure: Update sample code to use the
@DependencyClient
macro (#2653). - Infrastructure: Update migration guide with more information about applying
@CasePathable
to enums (#2672). - Infrastructure: Add basics of composition to the "essentials" tutorial (#2659).
Full Changelog: 1.5.5...1.5.6
1.5.5
What's Changed
- Fixed: A retain cycle fix in 1.5.4 could lead to regressions where stores can deinitialize before actions make it back into the system. This has been reverted and will have to be addressed in the future (#2648).
Full Changelog: 1.5.4...1.5.5
1.5.4
What's Changed
- Fixed: Archives should no longer fail due to
BindableAction
symbols (thanks @rhysm94, #2641). - Fixed: Stores no longer leak for the duration of an async effect. Instead, they will automatically cancel their in-flight effects when they deinitialize (#2643).
- Infrastructure: Improve docs for sharing logic in parent and child features (#2638).
- Infrastructure: Update test cases to use case key paths (thanks @yimajo, #2637).
- Infrastructure: Fix tutorial code diffs (#2642).
Full Changelog: 1.5.3...1.5.4
1.5.3
What's Changed
- Fixed: Don't force-unwrap state from invalidated optional stores when replaying parent state updates (#2633). This force-unwrap could affect
IfLetStore
views.
Full Changelog: 1.5.2...1.5.3