The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
**Other:**
- Replaced `open func` with `public func` in extensions to `Store` because they cannot be overridden anyway (https://github.com/ReSwift/ReSwift/pull491) - @maksimgromov
- Add tests to clarify initial state dispatch (https://github.com/ReSwift/ReSwift/pull/485) - @DivineDominion
- Fix some typos (https://github.com/ReSwift/ReSwift/pull/477) - @lumiasaki
- Migrate to Github Actions (https://github.com/ReSwift/ReSwift/pull/486) - @mjarvis
## New Contributors
* @lumiasaki made their first contribution in https://github.com/ReSwift/ReSwift/pull/477
* @maksimvm made their first contribution in https://github.com/ReSwift/ReSwift/pull/491
**Full Changelog**: https://github.com/ReSwift/ReSwift/compare/6.1.0...6.1.1
**API Changes:**
- Deprecate `StateType` protocol requirement (#462) - @mjarvis
**Other:**
- Fix bug where automaticallySkipsRepeats is ignored when subscribing on generic `S: StoreType` (#463) - @mjarvis
- Fix typo in error messaging (#470) - @hkellaway
**Breaking API Changes:**
- Drop support for Swift 3.2, 4.0, and 4.1. (#418) - @DivineDominion
- Drop support for iOS 8 (#447) - @DominicSchiller-IBM-CIC
**API Changes:**
- Add capability to mutate `Middleware` after store creation. (#427) - @mjarvis
**Other:**
- Add key paths to subscription select (#415) - @djtech42
- Make isDispatching of Store atomic (#341, #446) - @zhongwuzw, @basememara
**Breaking API Changes:**
- Remove `StandardAction` and `StandardActionConvertible` (#270) - @mjarvis
- The existence of `StandardAction` and `StandardActionConvertible` is somewhat confusing to new users, and does not have a direct use case within the core ReSwift library. Therefore, it has been moved to [ReSwift-Recorder](https://github.com/ReSwift/ReSwift-Recorder) where it belongs.
- If you're using `StandardAction` in your project without `ReSwift-Recorder`, you can copy the old implementation into your project as a middle ground while you migrate away from its usage.
- Make Store's state setter private (#354) - @mokagio
- Removes the ability to directly set `state` by making it `private(set)`. This prevents users from bypassing reducers and middleware. All mutation of the state must occur through the normal `Action` & `Reducer` methods.
- This deprecates the usage of `ReSwift-Recorder`. Changes may be made to that library in the future in order to support this change.
**Other:**
- Resolve Xcode 10.2 warnings with Swift 4.2.2 and 5.0 (#397) - @mjarvis
- Update Swift Package Manager support (#403, #411) - @Dschee, @hoemoon
- Fix 4.1.0 regression with `automaticallySkipsRepeats` when selecting Equatable state in Non-Equatable root state (#399) - @djtech42
**API Changes:**
- Deprecate `StandardAction` and `StandardActionConvertible` - @mjarvis
- These have been moved to https://github.com/ReSwift/ReSwift-Recorder since they are unnecessary for the base use of ReSwift
- Deprecate `ActionCreator` and `AsyncActionCreator` (#391) - @mjarvis
- These are deprecated in favor of https://github.com/ReSwift/ReSwift-Thunk
**Other**
- Add Subscription `skip(when:)` and `only(when:)` (#242) - @mjarvis
- Add `automaticallySkipsRepeats` configuration option to Store initializer (#262) - @DivineDominion
- Improve subscription & state update performance (#325) - @mjarvis
- Enable build settings "Allow app extension API only" (#328) - @oradyvan
- Open `Subscription<State>` to allow external extensions (#383) - @mjarvis
- Update project to Swift 4.2 (#256, #335, #374) - @mjarvis, @DivineDominion
**Other:**
- Fix retain cycle in SubscriptionBox (#278) - @mjarvis, @DivineDominion
- Fix bug where using skipRepeats with optional substate would not notify when the substate became nil #55655 - @Ben-G
- Add automatic skipRepeats for Equatable substate selection (#300) - @JoeCherry
**Breaking API Changes:**
- Introduced a new Subscription API (#203) - @Ben-G, @mjarvis, @DivineDominion
- The subscription API provides basic operators, such as `skipRepeats` (skip calls to `newState` unless state value changed) and `select` (sub-select a state).
- This is a breaking API change that requires migrating existing subscriptions that sub-select a portion of a store's state:
- Subselecting state in 3.0.0:
```swift
store.subscribe(subscriber) { ($0.testValue, $0.otherState?.name) }
```
- Subselecting state in 4.0.0:
```swift
store.subscribe(subscriber) {
$0.select {
($0.testValue, $0.otherState?.name)
}
}
```
- For any store state that is `Equatable` or any sub-selected state that is `Equatable`, `skipRepeats` will be used by default.
- For states/substates that are not `Equatable`, `skipRepeats` can be implemented via a closure:
```swift
store.subscribe(subscriber) {
$0.select {
$0.testValue
}.skipRepeats {
return $0 == $1
}
}
```
- Reducer type has been removed in favor of reducer function (#177) - Ben-G
- Here's an example of a new app reducer, for details see the README:
```swift
func counterReducer(action: Action, state: AppState?) -> AppState {
var state = state ?? AppState()
switch action {
case _ as CounterActionIncrease:
state.counter += 1
case _ as CounterActionDecrease:
state.counter -= 1
default:
break
}
return state
}
```
- `dispatch` functions now return `Void` instead of `Any` (#187) - @Qata
- The return type has been removed without any replacement, since the core team did not find any use cases of it. A common usage of the return type in redux is returning a promise that is fullfilled when a dispatched action is processed. While it's generally discouraged to disrupt the unidirectional data flow using this mechanism we do provide a `dispatch` overload that takes a `callback` argument and serves this purpose.
- Make `dispatch` argument in middleware non-optional (#225) - @dimazen, @mjarvis, @Ben-G
- `Middleware` now has a generic type parameter that is used for the `getState` method and matches the Store's `State` type. This allows accessing the state in middleware code without type casting (#226) - @mjarvis
**Other:**
- Extend `StoreType` with substate selector subscription (#192) - @mjarvis
- Add `DispatchingStoreType` protocol for testing (#197) - @mjarvis
- Installation guide for Swift Package Manager - @thomaspaulmann
- Update documentation to reflect breaking API changes - @mjarvis
- Clarify error message on concurrent usage of ReSwift - @langford
3.0.0 (Swift 3.0.1 Release)
7 years ago
_Released: 11/12/2016_
This release supports **Swift 3.0.1**
**Breaking API Changes:**
- Dropped support for Swift 2.2 and lower (#157) - @Ben-G
**API Changes:**
- Mark `Store` as `open`, this reverts a previously accidental breaking API Change (#157) - @Ben-G
**Other**:
- Update to Swift 3.0.1 - @Cristiam, @Ben-G
- Documentation changes - @vkotovv
2.1.0 (Swift 3.0 Release)
7 years ago
_Released: 09/15/2016_
This version supports **Swift 3** for Swift 2.2 support use an earlier release.
**Other**:
- Swift 3 preview compatibility, maintaining Swift 2 naming - (#126) - @agentk
- Xcode 8 GM Swift 3 Updates (#149) - @tkersey
- Migrate Quick/Nimble testing to XCTest - (#127) - @agentk
- Automatically build docs via Travis CI (#128) - @agentk
- Documentation Updates & Fixes - @mikekavouras, @ColinEberhardt