Compatibility Matrix
The single checked capability matrix for all eight SoarStarter templates.
This matrix is rendered from the checked-in typed compatibility dataset used by documentation tests. It describes the current v1 platform boundary; a checkmark for Unified does not imply identical platform features.
| Template | Unified role | Modes | Authentication | Session storage | Core data | Subscriptions | Notifications | Restrictions |
|---|---|---|---|---|---|---|---|---|
| Next.js | Host | Standalone + Unified | Better Auth: email/password and configured web OAuth | Server-managed database session; secure web cookie | Profiles, todos, presigned uploads, account deletion | Creem or Stripe; RevenueCat webhook bridge | APNs and FCM token registry; APNs test endpoint | Host implementation of the frozen Soar App API v1 contract |
| Nuxt | Host | Standalone + Unified | Better Auth: email/password and configured web OAuth | Server-managed database session; secure web cookie | Profiles, todos, presigned uploads, account deletion | Web checkout; RevenueCat webhook bridge | APNs and FCM token registry; APNs test endpoint | Conforming host; framework internals differ from Next.js |
| TanStack Start | Host | Standalone + Unified | Better Auth: email/password and configured web OAuth | Server-managed database session; secure web cookie | Profiles, todos, presigned uploads, account deletion | Web checkout; RevenueCat webhook bridge | APNs and FCM token registry; APNs test endpoint | Conforming host; framework internals differ from Next.js |
| Swift | Client | Standalone + Unified | Email/password and OTP; native Apple and Google | iOS Keychain | Profiles, todos, uploads, account deletion | RevenueCat / App Store plus shared web entitlement | APNs registration and current-user test push | iOS; native OAuth audiences must match the active host deployment |
| Kotlin | Client | Standalone + Unified | Email/password and OTP; Google Credential Manager | Android Keystore-backed secure storage | Profiles, todos, uploads, account deletion | RevenueCat / Google Play plus shared web entitlement | FCM token registration; Unified test push unavailable | No Apple login; frozen v1 test-push operation is APNs-only |
| Expo | Client | Standalone + Unified | Email/password and OTP; Apple on iOS, Google on native | Expo SecureStore on iOS and Android | Profiles, todos, uploads, account deletion | RevenueCat / App Store / Google Play plus web entitlement | APNs/FCM registration; Unified test push on iOS only | Unified is native-only; Expo Web is Standalone and email-auth only |
| Electron | Client | Standalone + Unified | Email/password and OTP; no social OAuth | Main-process-only encrypted safeStorage namespace | Profiles, todos, uploads, account deletion | Creem checkout plus shared web entitlement | Not implemented | macOS, Windows, Linux; renderer never receives bearer tokens or signed URLs |
| Tauri | Client | Standalone + Unified | Email/password and OTP; no social OAuth | Rust-private OS keyring namespace | Profiles, todos, uploads, account deletion | Creem checkout plus shared web entitlement | Not implemented | macOS, Windows, Linux; Webview cannot access bearer tokens or signed URLs |
Read the exceptions first
- Expo Web supports Standalone only. A Unified Expo build on Web fails explicitly and never falls back to Supabase.
- Kotlin and Expo Android register FCM tokens, but the frozen v1 current-user test-push endpoint is APNs-only.
- Apple and Google support follows the native platform and the active host deployment's OAuth audience configuration.
- Electron and Tauri use different secure desktop stores and keep Unified networking outside the renderer/Webview.
- Web templates are hosts, not App API client implementations.
