Releases: pointfreeco/swift-composable-architecture
1.14.0
What's Changed
- Added: Isolate
Store
,TestStore
, and various view helpers to the@MainActor
(#3277, #3283). This has been done with@preconcurrency
for backwards compatibility. If you are using strict concurrency it may require you add@MainActor
annotations to any SwiftUI view helpers that access the store. - Fixed: Don't eagerly dismiss an alert presented by another (#3309).
- Infrastructure: Bump Swift Navigation version (#3310).
- Infrastructure: Documentation fixes (thanks @woohyunjin06, #3296; @MaraMincho, #3299).
New Contributors
- @woohyunjin06 made their first contribution in #3296
- @MaraMincho made their first contribution in #3299
- @qwerty3345 made their first contribution in #3305
Full Changelog: 1.13.1...1.14.0
1.13.1
What's Changed
- Fixed: Address regression in which
observe
was limited to platforms that can import UIKit by bringing back an AppKit-compatible version (#3295). - Infrastructure: Integration test fixes (#3294).
Full Changelog: 1.13.0...1.13.1
1.13.0
What's Changed
- Added: UIKit navigation and binding tools (#3180).
- Fixed: Update
Shared
to invokereportIssue
(#3258). - Fixed: Address a few compiler warnings (#3279).
- Fixed: Avoid crash when writing to shared user defaults on a background thread (thanks @larryonoff, #3285).
- Infrastructure: Typo fixes (thanks @hmhv, #3267; @mltbnz, #3268).
- Infrastructure: Update swiftlang repository link (thanks @lamtrinhdev, #3270).
- Infrastructure: Updated a bunch of DocC references (#3287).
New Contributors
- @mltbnz made their first contribution in #3268
- @lamtrinhdev made their first contribution in #3270
Full Changelog: 1.12.1...1.13.0
1.12.1
What's Changed
- Fixed: Reference
IssueReporting
symbols instead ofXCTestDynamicOverlay
to avoid some linker errors (#3256). - Fixed: Point Issue Reporting to xctest-dynamic-overlay URL (#3257).
- Infrastructure: Add 1.12 migration guide (#3251).
- Infrastructure: Tutorial and documentation fixes (thanks @yaslab, #3250; @junbangg, #3252).
Full Changelog: 1.12.0...1.12.1
1.12.0
What's Changed
- Added: Swift Testing beta support (#3229).
- Added:
FileStorageKey
now supports custom decoding/encoding (thanks @oskarek, #3225). - Fixed: Update
@Reducer enum
macro to generate direct action cases for ephemeral state and avoid warnings produced byNever
(#3240). - Fixed:
Shared
'sdidSet
is now isolated to the main actor to avoid potential data races (#3206). - Fixed: Point updated packages to swiftlang organization to suppress SwiftPM warnings (#3234)
- Infrastructure: Tutorial/documentation/example typo fixes and cleanup (thanks @btr-better, #3193; @eltociear, #3194; #3200; @larryonoff, #3201; @junbangg, #3217, #3216, #3221, #3237, #3238; @gibachan, #3228; @takehilo, #3220; @daichikuwa0618, #3210).
- Infrastructure: Convert all test/example usage of
ActorIsolated
toLockIsolated
(#3198). - Infrastructure: Made internal improvements to shared file storage throttling (#3079).
- Infrastructure: Remove Swift 5.7.1 tools (#3203).
- Infrastructure: Add
.editorconfig
for consistent code formatting (thanks @Matejkob, #3215).
New Contributors
- @junbangg made their first contribution in #3217
- @Matejkob made their first contribution in #3215
- @daichikuwa0618 made their first contribution in #3210
- @oskarek made their first contribution in #3225
Full Changelog: 1.11.2...1.12.0
1.11.2
What's Changed
- Fixed: Avoid potential sendability warnings in Swift 6 mode (#3167).
- Fixed:
PersistenceKeyDefault
no longer uses the loaded value as an initial value (thanks @fdzsergio, #3174). - Fixed: Address a potential deadlock by isolating
Shared.withLock
to the main actor (#3178). - Fixed: Disfavor
Shared
's optional dynamic member lookup (#3170). Note that this fix may be source breaking. See the migration guide for more details. - Fixed: Don't over-observe app storage mutations (#3186).
- Fixed:
$shared.elements
is now stable based on identity, and restricted to identified arrays (#3187). - Infrastructure: Drop Swift <5.9 support (#3185). Xcode 15 has been required for app submission since April, so we can keep our Swift support in line with Apple's.
- Infrastructure: 1.11 migration guide fixes (thanks @larryonoff, #3184); tutorial typo fixes (thanks @meltsplit, #3161).
New Contributors
- @meltsplit made their first contribution in #3161
- @fdzsergio made their first contribution in #3174
Full Changelog: 1.11.1...1.11.2
1.11.1
What's Changed
- Fixed: Support swift-syntax from 600.0.0-latest (#3160).
- Fixed:
Shared.withLock
now pass values by continuation (#3154). - Infrastructure: Clean up DocC and link to new migration guide in README (#3153); SyncUp tutorial fixes (thanks @dafurman, #3139; thanks @RuiAAPeres, #3159); note Swift bug in documentation (#3157).
New Contributors
- @RuiAAPeres made their first contribution in #3159
Full Changelog: 1.11.0...1.11.1
1.11.0
What's Changed
- Added:
Shared.withLock
, for mutating shared state from asynchronous contexts (#3136). Direct mutations from asynchronous contexts is marked unavailable and will be an error in Swift 6. - Added:
SharedReader.constant
(#3127). - Added:
$store.scope
will now emit a warning when a dismiss action doesn'tnil
out a child feature, suggesting aReducer.ifLet
(or parent integration) is missing (#3089). - Deprecated:
Shared
's optional dynamic member lookup overload has been deprecated in favor of aBinding.init
that unwraps optional values (#3145). - Fixed: Avoid crash when using
.appStorage
with aURL
value (thanks @pwszebor, #3098). - Fixed: Worked around a build failure when integrating with Tuist (#3140).
- Infrastructure: Tutorial fixes (#3076; thanks @MartinMoizard, #3078; #3072; thanks @hmhv, #3091; thanks @gibachan, #3099; thanks @btr-better, #3107; thanks @woxtu, #3119, #3123; #3135; #3141; #3148); DocC fixes (#3085; #3087; thanks @JOyo246, #3092; thanks @leeari95, #3110; #3138); README fixes (thanks @Matt54, #3129); expose some navigation APIs with
@_spi(Internal)
(thanks @Alex293, #3097).
New Contributors
- @MartinMoizard made their first contribution in #3078
- @JOyo246 made their first contribution in #3092
- @pwszebor made their first contribution in #3098
- @Alex293 made their first contribution in #3097
- @gibachan made their first contribution in #3099
- @leeari95 made their first contribution in #3110
- @btr-better made their first contribution in #3107
- @Matt54 made their first contribution in #3129
Full Changelog: 1.10.4...1.11.0
1.10.4
What's Changed
- Fixed: Compute warnings lazily by @heoblitz in #3058
- Fixed: Lazy loading of Shared initial values by @seanmrich in #3060
- Fixed: Fix for throttle logic. by @mbrandonw in #3075
New Contributors
Full Changelog: 1.10.3...1.10.4
1.10.3
What's Changed
-
Fixed: Automatically cancel in-flight
TestStore
effects when its root feature is dismissed (#3044). -
Fixed: Propagate current dependencies to
Store.init
(#3049). -
Fixed: Runtime warn when stack integration is detected to be missing from store's reducer (#3048).
-
Fixed:
TestStore.finish()
should assert against unreceived actions (#3054). -
Fixed: Precondition when conflicting persistence keys must match value by @stephencelis in #3051.
Important:
If you have defined a custom persistence key, you may need to explicitly conform it toHashable
after upgrading to this version. -
Fixed:
@Shared
no longer eagerly evaluates its initial value (thanks @seanmrich, #3057). -
Infrastructure: Added a brand new tutorial: Building SyncUps (#3039).
-
Infrastructure: Add store invalidation test (#3038).
-
Infrastructure: Document
@CasePathable @dynamicMemberLookup
in 1.4 migration guide (#3043). -
Infrastructure: Document nested enum reducers (#3050).
New Contributors
- @seanmrich made their first contribution in #3057
Full Changelog: 1.10.2...1.10.3