Releases: pointfreeco/swift-composable-architecture
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
1.5.2
What's Changed
- Performance: cache more child stores and avoid extra copies of child/presented state (#2627).
- Infrastructure: 1.5 migration guide updates (#2615); link to observation beta in README (#2616).
Full Changelog: 1.5.1...1.5.2
1.5.1
What's Changed
- Fixed:
BindingAction
's case key path extraction was broken, which could lead to actions received through effects to not be testable, .e.g\.binding.$text
would fail to match.binding(.set(\.$text, "Blob"))
. This has been fixed (#2600). - Fixed: Store caching introduced in 1.5 could lead to a regression in which a child store becomes "detached" when an uncached parent is deinitialized. This has been fixed by only caching child stores when its parents are cached (#2605).
- Fixed:
NavigationStackStore
's internal use of@StateObject
could lead to broken navigation. By using an@ObservedObject
instead we now avoid this bug (#2599). - Infrastructure: Fixed typo in 1.5 migration guide (thanks @Ryu0118, #2595; thanks @yimajo, #2606); update documentation links in README (thanks @woxtu, #2598);
Full Changelog: 1.5.0...1.5.1
1.5.0
What's Changed
See Migrating to 1.5 for more details.
-
Added: A new
Store.scope
method that takes a state key path and action case key path (#2527). This method uses the hashability of key paths to cache scoped child stores in the parent, improving the performance of store scoping, especially when SwiftUI views are recomputed.See the migration guide for more info.
-
Added: DependenciesMacros is now automatically exported, making
@DependencyClient
available by default when importing the Composable Architecture (thanks @tgrapperon, #2586). -
Infrastructure: Fixed links in the migration guide (thanks @woxtu, #2578).
Full Changelog: 1.4.2...1.5.0
1.4.2
What's Changed
- Fixed:
swift-case-paths
is now correctly pinned from 1.1.0, which should avoid some SPM resolution issues (thanks @bdolewski-intellias, #2577).
New Contributors
- @bdolewski-intellias made their first contribution in #2577
Full Changelog: 1.4.1...1.4.2
1.4.1
What's Changed
- Fixed: A regression in
Reducer.forEach
was introduced in 1.4 that broke compilation in some cases, notably in the TCACoordinators library. This regression has been corrected (thanks @rhysm94, #2570). - Infrastructure: Updated Japanese and Korean README translations (thanks @Achoo-kr, #2563, #2562).
- Infrastructure: Fixed documentation links (thanks @johankool, #2566, #2576); fixed migration guide typos (thanks @kalupas226, #2569; @woxtu, #2575; @Ryu0118, #2574).
- Infrastructure: Clean up case study (thanks @mike123789-dev, #2567).
New Contributors
- @Achoo-kr made their first contribution in #2563
- @mike123789-dev made their first contribution in #2567
- @woxtu made their first contribution in #2575
- @rhysm94 made their first contribution in #2570
Full Changelog: 1.4.0...1.4.1
1.4.0
What's Changed
See Migrating to 1.4 for more details.
- Added: The
@Reducer
macro (#2553). See the migration guide for more details. - Added: Reducer builder support for
any Reducer<State, Action>
(#2533). - Fixed: Silenced a SwiftUI sendability warning (#2540).
- Fixed: Alert and confirmation dialog helpers now use
Text(verbatim: "")
to avoid localization warnings (#2541). - Fixed:
Reducer.onChange
no longer requires anEquatable
conformance (thanks @lukaskubanek, #2545). - Infrastructure: Updated Swift compiler version to 5.7.1 to follow Apple's policy (thanks @jaesung-0o0, #2549).
- Fixed: Short circuit equatability of ordered sets when counts don't match (#2556).
- Infrastructure: Added previews to integration test cases by (#2551)
New Contributors
- @lukaskubanek made their first contribution in #2545
Full Changelog: 1.3.0...1.4.0