Advanced · 20 min
Queue writes offline
Persist an idempotent write and inspect its replay state.
You’ll buildA disk-backed write queue with bounded retention and a visible receipt.
1
Step 1
Create a durable store
Use an app-owned Application Support location in production.
let queueURL = FileManager.default.temporaryDirectory
.appendingPathComponent("NovaOfflineQueue", isDirectory: true)
let store = DiskOfflineWriteStore(directoryURL: queueURL)2
Step 2
Build an idempotent write
A stable idempotency key lets the server recognize replayed work.
let request = APIRequest(
method: .post,
url: URL(string: "https://jsonplaceholder.typicode.com/posts")!,
headers: ["Idempotency-Key": UUID().uuidString],
body: Data("{\"title\":\"offline\"}".utf8)
)3
Step 3
Enqueue when offline
The result distinguishes immediate completion from a durable replay receipt.
let result = try await client.enqueueWrite(
request: request,
authScope: "user:42",
options: .init(offlineQueuePolicy: .init(mode: .enqueueWhenOffline))
)Tutorial complete