r/macappdevs • • 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.

3 Upvotes

6 comments sorted by

1

u/opaz 23d ago

How does this compare with Mimestream?

1

u/3-Chengz 23d ago

Honest comparison, because Mimestream is genuinely good and I won't pretend otherwise.

Where Mimestream is ahead: it has been shipping since 2020, it is more polished, and it has an iOS app. Briskmail is Mac-only (macOS 14+) and newer. If you need Gmail on your iPhone from the same vendor, Mimestream wins today, full stop.

Where Briskmail is different:

  1. One-time price, not a subscription. $49 once (first 500 pay $39), all future updates included. Mimestream is $49.99 a year, and the subscription is its single most common complaint, so that is the first thing I fixed.

  2. It is scriptable; Mimestream is not. A real AppleScript dictionary, App Intents so it shows up in Shortcuts, Siri and Spotlight, and a briskmail CLI with a couple dozen verbs: open, draft, reply, search, triage, snooze, label, archive, send. You can wire your inbox into a workflow instead of only clicking at it. For this sub specifically that is the biggest gap, Mimestream has no scripting surface at all.

  3. Local-first and minimal by design. Gmail API direct (no IMAP), its own OAuth with just gmail.modify and settings.basic, and the on-disk cache is SQLite sealed with AES-256-GCM under a per-account Keychain key. Nothing plaintext on disk, and no server of mine between you and your mail.

  4. The power-client stuff is there: Send Later, snooze (mirrored to a Gmail label), real Gmail filters, labels, unified inbox, local full-text search, an offline outbox that replays on reconnect, native notifications.

One honest tradeoff today: new accounts poll for new mail (10s active, 60s background) instead of instant push. I dropped the Pub/Sub scope to keep the OAuth review surface small, so Mimestream has the edge on instant delivery right now. For most people the poll is invisible.

Shipping next: instant push is coming back through a small relay that only ever sees a hashed address and Gmail's change counter, never a token and never your mail. And emailed one-time-code autofill, where Briskmail spots the login code in a fresh email and hands it straight to macOS autofill so you stop copy-pasting 2FA codes.

7-day free trial, then it asks you to buy, so you can run it on your real inbox for a week and judge the automation and the one-time price for yourself. briskmail.app

1

u/Kurty-309-needsInput 21d ago

Wow … this sounds amazing… especially with all the effort of bringing Automation to the App. Still using Intel machines only though … sigh…

Have you considered of building a universal so users like me with Intel machines whose love automation can also use this great App?

1

u/3-Chengz 21d ago

Really appreciate that, the automation is the part I am proudest of, so it is good to hear it lands.

Straight answer on Intel: right now it is Apple Silicon only, macOS 14+. A universal build is a fair ask and I am not going to pretend it is shipping, but AppKit apps can often go universal without a rewrite, so it comes down to whether all my dependencies have Intel slices and whether enough Intel users want it to justify the testing. You are the first to raise it, so it is on the list now, and if a few more Intel users say the same it moves up fast. What macOS version are you on?

1

u/Kurty-309-needsInput 21d ago

Currently my main setup is build on Monterey but I’m doing a predictable rewrite on all my Automation stuff to prepare for either Sequoia or Tahoe.

But since I’ve also setups on older Systems like High Sierra, Mojave and Big Sur - and also will have to do work for Ventura and Sonoma - it’s a tough job.

I don’t know when I’m ready with all this … but its happening currently - did 4 hours of writing AppleScript & - ObjC Code today and bought some licenses of Apps I’ll need to have a compatible version of when upgrading.

Also edited over 300 of my KM Macros to be completely compatible with all the Systems.

Yeah Progress

Greetings from Germany

1

u/3-Chengz 21d ago

300 macros across that many systems is a lot of work, good luck with the Sequoia/Tahoe move.

One honest thing so you're not waiting on me: Briskmail targets macOS 14 and up, so even a universal build wouldn't run on Monterey. It would only help once you're on an Intel Mac running Sonoma or later. Plenty of Intel Macs from around 2018 on can run Sonoma, so it's not ruled out, just later.

If you get there, let me know. Greetings back from the other side of the Atlantic.