Design decision 0003 · accepted
iCloud carries shares from your iPhone to your Mac
Shares travel through your private CloudKit database. Offline shares wait in an on-device outbox.
Context
The iPhone captures; the Mac does the work. They need a private, reliable channel without a Stash backend or an account.
Decision
Use CloudKit’s private database in a custom zone. The share extension saves a record (create-only, with a 10-second timeout). If that fails, the record goes to an app-group outbox the app flushes later. The Mac claims records with optimistic locking and writes back status, the tip’s title, type, takeaway, score and cover. Change tokens stay in memory, so a reinstall resyncs cleanly.
Consequences
- Your data is end-to-end yours: it sits in your iCloud, readable only by your Apple ID.
- No sign-up, no Stash server, and no API keys on the phone.
- The CloudKit schema must be deployed to Production before TestFlight or public builds.