Nuke 13.0 (Beta 1)
Pre-release
Pre-release
Nuke 13 is an incremental release that takes more advantage of Swift Concurrency and Data Race Safety by introducing a global ImagePipelineActor
on which its subsystems are all synchronized. It ensures thread-safety, removes 20 usages of @unchecked Sendable
, and makes the framework even leaner with ~5% less code in the main module. The future versions will completely switch to Swift Concurrency, but it will require a couple of more iterations.
Requirement: Xcode 16.
- Increase deployment targets to iOS 14, tvOS 14, macOS 11, watchOS 7
- Add global actor
ImagePipelineActor
.ImagePipeline,
ImageTask
,ImagePrefetcher
, and some other internal types are synchronized on the new actor. - Soft-deprecate closure-based
ImagePipeline
APIs - Soft-deprecate
ImagePipeline
Combine extension and move them toNukeExtensions
- Remove
ImagePipeline.Configuration.callbackQueue
- Remove
queue
parameter fromImagePipeline
loadImage
andloadData
method. The callbacks are now isolated to the@MainActor
and are@Sendable
. - Add
ImageTask.isCancelling
to make it easier to transition to Nuke 13 in case you were usingImageTask.state
for checking for cancellation invoked by the client (this might change in the upcoming betas) - Rename
ImagePipelineDelegate
toImagePipeline.Delegate
- Remove
ImagePipeline.Delegate
imageTaskDidStart
and other methods soft-deprecated in Nuke 12.7. - Remove
ImageRequest
initializers acceptingdataPublisher
(Combine) – use Swift Concurrency instead - Update
DataLoading
protocol to use Swift Concurrency instead of closures - Deprecate
FetchImage
Combine support