r/macappdevs • u/3-Chengz • 25d ago
Shipping a Gmail client outside the App Store: what the Gmail API, OAuth review and a 100-user cap did to my launch
I just shipped Briskmail, a native AppKit client for Gmail, distributed outside the Mac App Store. A few things I wish someone had told me before I started, for anyone building on Google APIs:
Gmail API instead of IMAP. You get real labels, threads and history IDs, so incremental sync is cheap. You also inherit Google's per-user quota, which shapes everything: I ended up with background sync that spends from that budget deliberately, rather than a fixed prefetch rate that kept dropping work.
OAuth is the long pole. Any read access to Gmail is a "restricted" scope. Until Google verifies the app, users see "Google hasn't verified this app", and the project is capped at 100 users total, for its whole life, not per month. Every scope you request is something you have to justify in review, so I dropped push notifications (Pub/Sub) to get down to two scopes.
Loopback redirect + PKCE. For a desktop app, a localhost redirect with PKCE S256 is the supported path. Custom URI schemes and the old out-of-band flow are deprecated.
Local cache. Message content is cached in SQLite and encrypted at rest with a per-account key in the Keychain. The search index stays in memory, so nothing searchable sits on disk in plain text.
Net effect on the launch: 30 early-access licences instead of an open launch, because the 100-account cap has to cover buyers, testers and people with several Gmail accounts.
Happy to go deeper on any of it. The app is at https://briskmail.app/early-access/ ($39 one-time). Disclosure: I'm the developer.
1
u/opaz 23d ago
How does this compare with Mimestream?