0.27.0
RAS-TCA specific changes
Changed: now requires ReactiveSwift 6.7.0 which supports re-entrant signals. This change, which is only used in Store.send
means that RAS-TCA now works exactly like the original Combine version and allows recursive calls to .send
, which previously would cause a crash on obtaining a Signal lock.
This now means that in the cases where previously you needed to wrap a call to .send
in a DispatchQueue.main.async {}
wrapper, this is no longer required.
It also means that all performance improvements from TCA have now been able to be ported across 🚀 However this does can cause a potential breaking change as mentioned in the release notes for TCA 0.20.0:
Performance improvement/fix: a store publisher will only emit a single state change per synchronous Store.send and asynchronous effect received. This means synchronous effects (returned immediately from a reducer via Effect.init(value:)) will no longer result in extra publisher emissions. This is a breaking change if your application previously depended on each of these emissions. Workaround: use Publisher.receive(on:) to schedule these effects on the next run loop tick.
The workaround for RAS-TCA is to use .observe(on: QueueScheduler.main)
for these situations.
From upstream TCA
This release brings this fork up to date with the upstream library at release 0.27.0:
From TCA 0.23.0
Please refer to the TCA 0.23.0 release notes.
From TCA 0.24.0
Please refer to the TCA 0.24.0 release notes.
From TCA 0.25.0
Please refer to the TCA 0.25.0 release notes.
Note:
Added: the Composable Architecture now uses Custom Dump for its debugging and testing tools. This library improves upon the original debugging/diffing tools that came with earlier versions of the Composable Architecture by collapsing unchanged parts of the diff, and more.
Since Custom Dump requires iOS 13, macOS 10.15 etc, this fork continues with the existing debugDump
code in the library and doesn't use Custom Dump. This also means XCTAssertNoDifference
is not available in this fork.
From TCA 0.26.0
Please refer to the TCA 0.26.0 release notes.
From TCA 0.27.0
Please refer to the TCA 0.27.0 release notes.