The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of swiftui-cached-async-image, reference main (4f111f), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 00:26:36 UTC.

Swift 6 data race errors: 2

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/lorenzofiamingo/swiftui-cached-async-image
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 4f111f2 Update README.md
Cloned https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
Revision (git rev-parse @):
4f111f2b7aab7ec52a60716cedb673df5203743c
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/lorenzofiamingo/swiftui-cached-async-image.git at main
Fetching https://github.com/apple/swift-docc-plugin
[1/2049] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.09s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.0.0 (1.67s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.0.0
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "swiftui-cached-async-image",
      "name": "swiftui-cached-async-image",
      "url": "https://github.com/lorenzofiamingo/swiftui-cached-async-image.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swiftui-cached-async-image",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
[1/176] Fetching swiftui-cached-async-image
Fetched https://github.com/lorenzofiamingo/swiftui-cached-async-image.git from cache (0.67s)
Creating working copy for https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
Working copy of https://github.com/lorenzofiamingo/swiftui-cached-async-image.git resolved at main (4f111f2)
warning: '.resolve-product-dependencies': dependency 'swiftui-cached-async-image' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
https://github.com/lorenzofiamingo/swiftui-cached-async-image.git
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "swiftui-cached-async-image",
  "name" : "swiftui-cached-async-image",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "CachedAsyncImage",
      "targets" : [
        "CachedAsyncImage"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CachedAsyncImage",
      "module_type" : "SwiftTarget",
      "name" : "CachedAsyncImage",
      "path" : "Sources/CachedAsyncImage",
      "product_memberships" : [
        "CachedAsyncImage"
      ],
      "sources" : [
        "CachedAsyncImage.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/6] Emitting module CachedAsyncImage
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:389:15: warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
387 | // MARK: - AsyncImageURLSession
388 |
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
    |               `- warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
390 |
391 |     var metrics: URLSessionTaskMetrics?
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:391:9: warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
390 |
391 |     var metrics: URLSessionTaskMetrics?
    |         `- warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
392 |
393 |     func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
[6/6] Compiling CachedAsyncImage CachedAsyncImage.swift
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:389:15: warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
387 | // MARK: - AsyncImageURLSession
388 |
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
    |               `- warning: non-final class 'URLSessionTaskController' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
390 |
391 |     var metrics: URLSessionTaskMetrics?
/Users/admin/builder/spi-builder-workspace/Sources/CachedAsyncImage/CachedAsyncImage.swift:391:9: warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
389 | private class URLSessionTaskController: NSObject, URLSessionTaskDelegate {
390 |
391 |     var metrics: URLSessionTaskMetrics?
    |         `- warning: stored property 'metrics' of 'Sendable'-conforming class 'URLSessionTaskController' is mutable; this is an error in the Swift 6 language mode
392 |
393 |     func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
Build complete! (14.52s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "swiftui-cached-async-image",
  "name" : "swiftui-cached-async-image",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "CachedAsyncImage",
      "targets" : [
        "CachedAsyncImage"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CachedAsyncImage",
      "module_type" : "SwiftTarget",
      "name" : "CachedAsyncImage",
      "path" : "Sources/CachedAsyncImage",
      "product_memberships" : [
        "CachedAsyncImage"
      ],
      "sources" : [
        "CachedAsyncImage.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/lorenzofiamingo/swiftui-cached-async-image/main
Repository:               lorenzofiamingo/swiftui-cached-async-image
Swift version used:       6.1
    .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0")
Target:                   CachedAsyncImage
Generating documentation for 'CachedAsyncImage'...
Converting documentation...
warning: No external resolver registered for 'com.apple.documentation'.
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:10:10-10:71
8  | ///
9  | /// This view uses a custom default
10 + /// <doc://com.apple.documentation/documentation/Foundation/URLSession>
11 | /// instance to load an image from the specified URL, and then display it.
12 | /// For example, you can display an icon that's stored on a server:
warning: Resource 'AsyncImage-1' couldn't be found
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:22:5-24:59
20 | /// than the frame, and so appears smaller than the placeholder.
21 | ///
22 + /// ![A diagram that shows a grey box on the left, the SwiftUI icon on the
23 + /// right, and an arrow pointing from the first to the second. The icon
24 + /// is about half the size of the grey box.](AsyncImage-1)
25 | ///
26 | /// You can specify a custom placeholder using
warning: 'ProgressView' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:38:41-38:53
36 | ///     .frame(width: 50, height: 50)
37 | ///
38 + /// For this example, SwiftUI shows a ``ProgressView`` first, and then the
   |                                         ╰─suggestion: Replace 'ProgressView' with 'progressViewStyle(_:)'
39 | /// image scaled to fit in the specified frame:
40 | ///
warning: Resource 'AsyncImage-2' couldn't be found
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:41:5-42:78
39 | /// image scaled to fit in the specified frame:
40 | ///
41 + /// ![A diagram that shows a progress view on the left, the SwiftUI icon on the
42 + /// right, and an arrow pointing from the first to the second.](AsyncImage-2)
43 | ///
44 | /// > Important: You can't apply image-specific modifiers, like
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:45:9-45:14
43 | ///
44 | /// > Important: You can't apply image-specific modifiers, like
45 + /// ``Image/resizable(capInsets:resizingMode:)``, directly to a `CachedAsyncImage`.
46 | /// Instead, apply them to the ``Image`` instance that your `content`
47 | /// closure gets when defining the view's appearance.
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:46:36-46:41
44 | /// > Important: You can't apply image-specific modifiers, like
45 | /// ``Image/resizable(capInsets:resizingMode:)``, directly to a `CachedAsyncImage`.
46 + /// Instead, apply them to the ``Image`` instance that your `content`
47 | /// closure gets when defining the view's appearance.
48 | ///
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage'
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:51:42-51:57
49 | /// To gain more control over the loading process, use the
50 | /// ``init(url:urlCache:scale:transaction:content:)`` initializer, which takes a
51 + /// `content` closure that receives an ``AsyncImagePhase`` to indicate
52 | /// the state of the loading operation. Return a view that's appropriate
53 | /// for the current phase:
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:)'
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:96:30-96:35
94 |     ///
95 |     /// If you want to customize the placeholder or apply image-specific
96 +     /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
97 |     /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
98 |     /// initializer instead.
warning: 'init(url:scale:content:placeholder:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:)'
  --> Sources/CachedAsyncImage/CachedAsyncImage.swift:97:40-97:76
95 |     /// If you want to customize the placeholder or apply image-specific
96 |     /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
97 +     /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
98 |     /// initializer instead.
99 |     ///
warning: 'Image' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:123:30-123:35
121 |     ///
122 |     /// If you want to customize the placeholder or apply image-specific
123 +     /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
124 |     /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
125 |     /// initializer instead.
warning: 'init(url:scale:content:placeholder:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:124:40-124:76
122 |     /// If you want to customize the placeholder or apply image-specific
123 |     /// modifiers --- like ``Image/resizable(capInsets:resizingMode:)`` ---
124 +     /// to the loaded image, use the ``init(url:scale:content:placeholder:)``
125 |     /// initializer instead.
126 |     ///
warning: 'init(url:scale:transaction:content:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:content:placeholder:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:161:19-161:55
159 |     /// If the load operation fails, SwiftUI continues to display the
160 |     /// placeholder. To be able to display a different view on a load error,
161 +     /// use the ``init(url:scale:transaction:content:)`` initializer instead.
162 |     ///
163 |     /// - Parameters:
warning: 'init(url:scale:transaction:content:)' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:content:placeholder:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:197:19-197:55
195 |     /// If the load operation fails, SwiftUI continues to display the
196 |     /// placeholder. To be able to display a different view on a load error,
197 +     /// use the ``init(url:scale:transaction:content:)`` initializer instead.
198 |     ///
199 |     /// - Parameters:
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:225:11-225:26
223 |     /// If you set the asynchronous image's URL to `nil`, or after you set the
224 |     /// URL to a value but before the load operation completes, the phase is
225 +     /// ``AsyncImagePhase/empty``. After the operation completes, the phase
226 |     /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:226:26-226:41
224 |     /// URL to a value but before the load operation completes, the phase is
225 |     /// ``AsyncImagePhase/empty``. After the operation completes, the phase
226 +     /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 |     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:227:11-227:26
225 |     /// ``AsyncImagePhase/empty``. After the operation completes, the phase
226 |     /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 +     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 |     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
229 |     /// In the second case, the phase's ``AsyncImagePhase/image`` property
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:228:11-228:26
226 |     /// becomes either ``AsyncImagePhase/failure(_:)`` or
227 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 +     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
229 |     /// In the second case, the phase's ``AsyncImagePhase/image`` property
230 |     /// contains the loaded image. Use the phase to drive the output of the
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(url:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:229:43-229:58
227 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
228 |     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
229 +     /// In the second case, the phase's ``AsyncImagePhase/image`` property
230 |     /// contains the loaded image. Use the phase to drive the output of the
231 |     /// `content` closure, which defines the view's appearance:
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:265:11-265:26
263 |     /// If you set the asynchronous image's URL to `nil`, or after you set the
264 |     /// URL to a value but before the load operation completes, the phase is
265 +     /// ``AsyncImagePhase/empty``. After the operation completes, the phase
266 |     /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:266:26-266:41
264 |     /// URL to a value but before the load operation completes, the phase is
265 |     /// ``AsyncImagePhase/empty``. After the operation completes, the phase
266 +     /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 |     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:267:11-267:26
265 |     /// ``AsyncImagePhase/empty``. After the operation completes, the phase
266 |     /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 +     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 |     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
269 |     /// In the second case, the phase's ``AsyncImagePhase/image`` property
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:268:11-268:26
266 |     /// becomes either ``AsyncImagePhase/failure(_:)`` or
267 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 +     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
269 |     /// In the second case, the phase's ``AsyncImagePhase/image`` property
270 |     /// contains the loaded image. Use the phase to drive the output of the
warning: 'AsyncImagePhase' doesn't exist at '/CachedAsyncImage/CachedAsyncImage/init(urlRequest:urlCache:scale:transaction:content:)'
   --> Sources/CachedAsyncImage/CachedAsyncImage.swift:269:43-269:58
267 |     /// ``AsyncImagePhase/success(_:)``. In the first case, the phase's
268 |     /// ``AsyncImagePhase/error`` value indicates the reason for failure.
269 +     /// In the second case, the phase's ``AsyncImagePhase/image`` property
270 |     /// contains the loaded image. Use the phase to drive the output of the
271 |     /// `content` closure, which defines the view's appearance:
Conversion complete! (1.10s)
Generated DocC archive at '/Users/admin/builder/spi-builder-workspace/.docs/lorenzofiamingo/swiftui-cached-async-image/main'
Building for debugging...
[0/1] Write swift-version-2F0A5646E1D333AE.txt
[2/3] Compiling CachedAsyncImage CachedAsyncImage.swift
[3/3] Emitting module CachedAsyncImage
Build of target: 'CachedAsyncImage' complete! (0.62s)
    1478
11	/Users/admin/builder/spi-builder-workspace/.docs/lorenzofiamingo/swiftui-cached-async-image/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/lorenzofiamingo/swiftui-cached-async-image/main
File count: 1478
Doc size:   11.0MB
Preparing doc bundle ...
Uploading prod-lorenzofiamingo-swiftui-cached-async-image-main-674edfb4.zip to s3://spi-docs-inbox/prod-lorenzofiamingo-swiftui-cached-async-image-main-674edfb4.zip
Copying... [12%]
Copying... [21%]
Copying... [33%]
Copying... [42%]
Copying... [50%]
Copying... [62%]
Copying... [71%]
Copying... [80%]
Copying... [92%]
Copying... [100%]
Done.