Skip to content

Releases: pointfreeco/swift-composable-architecture

1.7.0

28 Jan 21:08
30ab89d
Compare
Choose a tag to compare

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 from XCTestDynamicOverlay (#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

08 Jan 18:43
Compare
Choose a tag to compare

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 be Equatable (#2669; #2691)
  • Fixed: It was possible for ViewStores to ping their objectWillChange 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

Full Changelog: 1.5.6...1.6.0

1.5.6

20 Dec 16:58
Compare
Choose a tag to compare

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

12 Dec 22:10
cb9c1f8
Compare
Choose a tag to compare

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

12 Dec 08:44
b86012c
Compare
Choose a tag to compare

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

08 Dec 17:12
Compare
Choose a tag to compare

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

07 Dec 22:56
Compare
Choose a tag to compare

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

04 Dec 18:32
Compare
Choose a tag to compare

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

26 Nov 20:09
Compare
Choose a tag to compare

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

15 Nov 21:00
Compare
Choose a tag to compare

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

Full Changelog: 1.4.1...1.4.2