Three clients read the same cards and the same review log. The source of truth is on GitHub, so grading on one device continues on another.
| iOS / iPadOS | Android | macOS | |
|---|---|---|---|
| Distribution | App Store | Google Play | .dmg from this site (notarised) |
| Requirements | iOS 17.0+ | Android 8.0+ | macOS 13+ |
| Anchor Pro | Yes | Yes | No (set the number freely) |
| Connecting | Device flow + pasted token | Same | Same |
| Token storage | Keychain | Encrypted device storage | macOS keychain |
| Study / Browse / Changes | ✅ | ✅ | ✅ |
| Bulk weak-card copy, history | ✅ | — | ✅ |
| Speech, haptics, sharing with other apps | ✅ | — | — |
| Card appearance | Follows OS text size | Follows OS text size | In-app (size, heading colour, emphasis) |
| Undo a grade (few-second grace) | ✅ | — | — |
| Optimise from your log | — | — | ✅ |
| Keyboard | 1–4 (for Split View on iPad) | — | Space/Enter, 1–4, s, ⌫ |
There are no Windows or Linux builds.
Differences that are deliberate
- Undoing a grade: Mac and Android write the moment you press, so “Back one” there always means “the card returns, the grade stands”
- Trial grades: iOS separates the storage; Mac and Android stop them at the send step. Either way they never enter your repository
- Fetching cards: Mac fetches in parallel so the first sync is not a wait (writes are serial and 1.1 seconds apart everywhere)
- Markdown rendering: tables scroll sideways on Mac; on iPhone-width screens wrapping reads better, so iOS and Android wrap
- The FSRS engine: three different implementations, but the default parameters are aligned to FSRS-6, so the same log gives the same intervals
All three use one GitHub App
Authorisation and installation are per-App, so connecting on iOS means you do not start over when you install the Mac build. Otherwise the central promise — three clients reading the same cards — would break at the front door.