NNovaNetworkClientSwift networkingGitHub ↗

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.

Queuewritesoffline.swift
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.

Queuewritesoffline.swift
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.

Queuewritesoffline.swift
let result = try await client.enqueueWrite(
    request: request,
    authScope: "user:42",
    options: .init(offlineQueuePolicy: .init(mode: .enqueueWhenOffline))
)
✓

Tutorial complete

A disk-backed write queue with bounded retention and a visible receipt.