---
title: "write(snapshot:to:previous:progress:)"
framework: swiftui
role: symbol
role_heading: Instance Method
platforms: [iOS 27.0+, iPadOS 27.0+, Mac Catalyst 27.0+, macOS 27.0+, visionOS 27.0+]
path: "swiftui/documentwriter/write(snapshot:to:previous:progress:)"
---

# write(snapshot:to:previous:progress:)

Writes the document content to disk.

## Declaration

```swift
@concurrent func write(snapshot: sending Self.Snapshot, to destination: sending Self.Destination, previous: sending Self.Snapshot?, progress: consuming Subprogress) async throws
```

## Parameters

- `snapshot`: The snapshot to write to disk.
- `destination`: The file URL to write to.
- `previous`: The last successfully written snapshot, or nil on the first save. Compare to content to write only what changed in package documents.
- `progress`: A Subprogress value to report writing progress. Consume it once with reporter(totalCount:) and call complete(count:) as units finish.

## Discussion

Discussion SwiftUI calls this method in the background after obtaining a snapshot via snapshot(contentType:). Perform all serialization and disk access here. For most documents, use FileWrapperDocumentWriter instead of implementing a custom writer. Only implement write yourself when you need capabilities FileWrapperDocumentWriter doesn’t provide — such as direct URL access for Core Graphics, AVFoundation, or other frameworks that operate on file paths: @concurrent func write(content image: sending CGImage, to destination: URL,     previous: sending CGImage?, progress: consuming Subprogress ) async throws {     guard let imageDestination =         CGImageDestinationCreateWithURL(             destination as CFURL,             UTType.jpeg.identifier as CFString,             1, nil         ) else {         throw CocoaError(.fileWriteUnknown)     }     CGImageDestinationAddImage(         imageDestination, image, nil     )     guard CGImageDestinationFinalize(         imageDestination     ) else {         throw CocoaError(.fileWriteUnknown)     } }

## See Also

### Writing a document

- [Snapshot](swiftui/documentwriter/snapshot.md)
- [Destination](swiftui/documentwriter/destination.md)
