- Added:
Effect.deferred()
, for delaying the execution of an effect by a given time (compare toPublisher.delay()
, which delays merely the delivery of some work that has already been performed). Thanks, @wendyliga. - Updated:
SwitchStore
now supports up to 9CaseLet
views. - Performance improvement/fix: the number of times
Store.scope
's state transform function has been minimized. Previously it was evaluated an extra time, multiplied by downstream scopes. - Performance improvement/fix: the number of times
ViewStore
's duplicate check has been reduced. - 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 viaEffect.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: usePublisher.receive(on:)
to schedule these effects on the next run loop tick. - Infrastructure: cleaned up demo apps and documentation; added an Indonesian translation of the README (thanks @wendyliga).