tag:github.com,2008:https://github.com/StevenLambion/SwiftDux/releasesRelease notes from SwiftDux2020-11-29T23:58:00Ztag:github.com,2008:Repository/191248620/v2.0.12020-11-30T00:04:26Zv2.0.1<h1>Fixes</h1>
<ul>
<li>The <code>View.onAppear(dispatch:)</code> method caused duplicate views. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="752965405" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/54" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/54/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/54">#54</a></li>
<li>RunnableActions were incorrectly dispatched to the store's reducer.</li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v2.0.02020-11-21T18:09:00Zv2.0.0<h1>Deprecated</h1>
<ul>
<li><code>MappedDispatch</code> should be replaced with <code>@Environment(.\actionDisaptcher)</code> to be consistent with Apple's usage. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
<li><code>MappedState</code> should be replaced with <code>ConnectableView</code> or <code>Connector</code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
<li><code>StateType</code> and <code>IdentifiableState</code> are deprecated in favor of having applications define their own protocol to adhere to. Instead of requiring an opinionated state type, the library uses conditional protocol adherences when necessary. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
<li><code>onAction(perform:)</code> view modifier is deprecated in favor of using middleware. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
</ul>
<h1>Changes</h1>
<ul>
<li>macOS 11.0 is now required. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
<li>Removed ActionType from the Store<_>'s didChange publisher. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="738513131" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/48" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/48/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/48">#48</a></li>
<li><code>Connector</code>'s internal publishing logic has been moved to <code>StateStorable</code>, so it may be reused elsewhere. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
<li>All actions may now be chained instead of just ActionPlans. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="744041194" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/51" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/51/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/51">#51</a></li>
<li><code>RunnableAction</code> now returns an AnyPublisher<Action, Never> type instead of an <code>AnyCancellable</code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="744041194" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/51" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/51/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/51">#51</a></li>
<li><code>ActionPlan</code> now requires a publisher to return from async blocks instead of providing a completion closure. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="747785924" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/52" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/52/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/52">#52</a></li>
<li><code>Middleware</code> now return an optional <code>Action</code> instead of calling <code>next(_:)</code> on the <code>StoreProxy<_></code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="747785924" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/52" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/52/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/52">#52</a></li>
</ul>
<h1>Added</h1>
<ul>
<li>Added concrete <code>StorePublisher</code> in place of using AnyPublisher for store changes. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="738513131" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/48" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/48/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/48">#48</a></li>
<li>Added <code>StateStorable</code> protocol so that there's a shared way to extend the Store<<em>> and StoreProxy<</em>> types. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
<li>Added <code>StateStorable.publish(_:)</code> method as a single place to receive an updatable state object. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
</ul>
<h1>Removed</h1>
<ul>
<li>StateBinder is removed. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="738513131" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/48" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/48/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/48">#48</a></li>
<li>Removed <code>next(_:)</code> from <code>StoreProxy<_></code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="747785924" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/52" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/52/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/52">#52</a></li>
<li>Removed the completion closure from <code>ActionSubscriber</code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="747785924" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/52" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/52/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/52">#52</a></li>
</ul>
<h1>Fixed</h1>
<ul>
<li>Fixed type inference with <code>onAppear(dispatch:)</code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="741731120" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/50" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/50/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/50">#50</a></li>
<li>Fixed a circular dependency in the <code>StoreProxy<_></code> given to middleware. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="747785924" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/52" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/52/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/52">#52</a></li>
<li>Fixed a bug introduced with iOS 14 that may cause a crash related to the onReceive view modifier. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="747785924" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/52" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/52/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/52">#52</a></li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v1.2.42020-11-10T16:48:51Zv1.2.4<h1>Fixed</h1>
<ul>
<li>Fixed broken type inference in Swift 5.3. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="723512658" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/47" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/47/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/47">#47</a></li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v1.2.32020-10-14T16:36:10Zv1.2.3<h1>Changed</h1>
<ul>
<li>Replaced the requirement for StateType and IdentifiableState by using conditional, granular constraints where needed. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="721526921" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/46" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/46/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/46">#46</a></li>
<li>NoopAnyStore is now a struct. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="621966365" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/44" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/44/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/44">#44</a></li>
<li>Views can now use protocols that the AppState adheres to to retrieve specific parts of the app state. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="621966365" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/44" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/44/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/44">#44</a></li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v1.2.22020-05-20T20:08:13Zv1.2.2<p>Merge pull request <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="621966365" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/44" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/44/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/44">#44</a> from StevenLambion/features/pass-store-as-enviā¦</p>StevenLambiontag:github.com,2008:Repository/191248620/v1.2.12020-05-13T01:06:23Zv1.2.1<h1>Added</h1>
<ul>
<li><code>View.provideStore(_:as:)</code> To inject a store with a specific type of state. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="616706836" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/42" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/42/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/42">#42</a></li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v1.2.02020-05-05T00:27:18Zv1.2.0<h1>Changed</h1>
<ul>
<li>ActionBinder can now bind actions to callable functions. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="611994211" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/40" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/40/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/40">#40</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="611214315" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/38" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/38/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/38">#38</a></li>
<li>Replaced the old internal state connection API with a faster and simpler implementation. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="611248484" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/39" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/39/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/39">#39</a></li>
</ul>
<h1>Removed</h1>
<ul>
<li>Removed <code>Connectable</code> API in favor of ConnectableView due to incompatibilities with the new internal, reference-free implementation. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="611248484" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/39" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/39/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/39">#39</a></li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v1.1.02020-04-11T20:04:39Zv1.1.0<h1>Changed</h1>
<ul>
<li>Loosened the adherence to StateType at the Store level. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="591174200" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/36" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/36/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/36">#36</a></li>
<li>Simplified ActionDispatcher API by moving the proxy functionality to OnActionViewModifier. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561705809" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/32" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/32/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/32">#32</a></li>
<li>Provided a more consistent Store API between reducers and middleware. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561966883" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/33" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/33/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/33">#33</a></li>
<li><code>ActionDispatcher</code> can now be called as a function. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561705809" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/32" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/32/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/32">#32</a></li>
<li><code>MappedDispatch</code> injects an ActionDispatcher instead of a function. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561705809" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/32" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/32/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/32">#32</a></li>
<li>Modified the implementation of action plans to make it easier to include 3rd party ones. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="591174200" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/36" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/36/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/36">#36</a></li>
</ul>
<h1>Added</h1>
<ul>
<li>Added ActionBinding<> to replace the Equatable extension on Binding<>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560474167" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/30" data-hovercard-type="issue" data-hovercard-url="/StevenLambion/SwiftDux/issues/30/hovercard" href="https://github.com/StevenLambion/SwiftDux/issues/30">#30</a></li>
</ul>
<h1>Removed</h1>
<ul>
<li>onAppearAsync and onDisappearAsync. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="591174200" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/36" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/36/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/36">#36</a></li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v1.0.12020-01-23T15:21:29Zv1.0.1<h1>Added</h1>
<ul>
<li><code>ConnectableView</code> as a convenient wrapper over <code>Connectable</code> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="553847827" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/27" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/27/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/27">#27</a></li>
</ul>StevenLambiontag:github.com,2008:Repository/191248620/v1.0.02020-01-22T13:29:53Zv1.0.0<p>This marks the 1.0.0 release of the library. The API will be stabilized moving forward.</p>
<h1>Fixed</h1>
<ul>
<li><code>PersistStateMiddleware</code> would save the state when the <code>StoreAction<_>.reset</code> was dispatched. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a>
<ul>
<li>It no longer saves the state when the store is reset.</li>
</ul>
</li>
<li><code>Connectable.updateWhen</code> would stop a view from updating from its own dispatched actions. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a>
<ul>
<li>If the method is implemented, both it and any dispatched actions will cause an update.</li>
</ul>
</li>
<li><code>Connectable.updateWhen</code> would fail to work in some cases when the first call returned true. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a>
<ul>
<li>Returning true using any possible implementation will now work.</li>
</ul>
</li>
</ul>
<h1>Changed</h1>
<ul>
<li><code>State</code> is now required to be equatable. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="553206840" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/26" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/26/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/26">#26</a></li>
<li><code>Middleware</code> is now a protocol type. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="551822848" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/25" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/25/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/25">#25</a></li>
<li><code>StoreProxy.state</code> is now a non-optional type. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>Store</code>, <code>ActionDispatcher</code>, and <code>StatePersistor</code> no longer adhere to <code>Subscriber</code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>Store.didChange</code> is now an <code>AnyPublisher<Action, Never></code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>PersistStateMiddleware</code> now debounces for 1 second by default. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>PrintActionMiddleware</code> now accepts a new filter block. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>onAppearAsync</code> and <code>onDisappearAsync</code> are deprecated. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a>
<ul>
<li>These were need to workaround a bug in a pervious beta of iOS 13. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
</ul>
</li>
</ul>
<h1>Added</h1>
<ul>
<li><code>ActionPlan</code> has a new init block that accepts an AnyCancellable to support <code>ActionSubsriber</code>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>ActionSubscriber</code> to dispatch actions from a publisher. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>PersistSubscriber</code> to persist state from a publisher. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>StoreProxy.done</code> for use in action plans to tell the proxy that it has completed. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="549235119" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/24" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/24/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/24">#24</a></li>
<li><code>TypedMiddleware</code> and <code>HandleActionMiddleware</code>. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="551822848" data-permission-text="Title is private" data-url="https://github.com/StevenLambion/SwiftDux/issues/25" data-hovercard-type="pull_request" data-hovercard-url="/StevenLambion/SwiftDux/pull/25/hovercard" href="https://github.com/StevenLambion/SwiftDux/pull/25">#25</a></li>
</ul>StevenLambion