兼容矩阵
覆盖全部八个 SoarStarter 模板的唯一结构化能力矩阵。
此矩阵由 Hub 中受类型检查的兼容数据生成,并由文档测试验证。它描述当前 v1 平台边界;支持 Unified 不代表所有平台能力完全相同。
| 模板 | Unified 角色 | 部署方式 | 认证 | Session 存储 | 核心数据 | 订阅 | 通知 | 限制 |
|---|---|---|---|---|---|---|---|---|
| Next.js | 服务端宿主 | Standalone + Unified | Better Auth:邮箱密码与已配置的 Web OAuth | 服务端数据库 Session;安全 Web Cookie | Profile、Todo、预签名上传、账户删除 | Creem 或 Stripe;RevenueCat Webhook 桥接 | APNs 与 FCM Token 注册;APNs 测试端点 | 冻结的 Soar App API v1 契约宿主实现 |
| Nuxt | 服务端宿主 | Standalone + Unified | Better Auth:邮箱密码与已配置的 Web OAuth | 服务端数据库 Session;安全 Web Cookie | Profile、Todo、预签名上传、账户删除 | Web 支付;RevenueCat Webhook 桥接 | APNs 与 FCM Token 注册;APNs 测试端点 | 契约兼容宿主;框架内部实现与 Next.js 不同 |
| TanStack Start | 服务端宿主 | Standalone + Unified | Better Auth:邮箱密码与已配置的 Web OAuth | 服务端数据库 Session;安全 Web Cookie | Profile、Todo、预签名上传、账户删除 | Web 支付;RevenueCat Webhook 桥接 | APNs 与 FCM Token 注册;APNs 测试端点 | 契约兼容宿主;框架内部实现与 Next.js 不同 |
| Swift | 客户端 | Standalone + Unified | 邮箱密码与 OTP;原生 Apple 和 Google | iOS Keychain | Profile、Todo、上传、账户删除 | RevenueCat / App Store 与共享 Web 权益 | APNs 注册与当前用户测试推送 | 仅 iOS;原生 OAuth audience 必须匹配当前宿主部署 |
| Kotlin | 客户端 | Standalone + Unified | 邮箱密码与 OTP;Google Credential Manager | Android Keystore 安全存储 | Profile、Todo、上传、账户删除 | RevenueCat / Google Play 与共享 Web 权益 | FCM Token 注册;Unified 测试推送不可用 | 无 Apple 登录;冻结的 v1 test-push 仅支持 APNs |
| Expo | 客户端 | Standalone + Unified | 邮箱密码与 OTP;iOS 支持 Apple,原生端支持 Google | iOS 与 Android 使用 Expo SecureStore | Profile、Todo、上传、账户删除 | RevenueCat / App Store / Google Play 与 Web 权益 | APNs/FCM 注册;Unified 测试推送仅限 iOS | Unified 仅支持原生端;Expo Web 仅支持 Standalone 与邮箱认证 |
| Electron | 客户端 | Standalone + Unified | 邮箱密码与 OTP;不支持社交 OAuth | 仅主进程可访问的加密 safeStorage 命名空间 | Profile、Todo、上传、账户删除 | Creem 支付与共享 Web 权益 | 未实现 | macOS、Windows、Linux;Renderer 不接收 Bearer Token 或签名 URL |
| Tauri | 客户端 | Standalone + Unified | 邮箱密码与 OTP;不支持社交 OAuth | Rust 私有的系统 Keyring 命名空间 | Profile、Todo、上传、账户删除 | Creem 支付与共享 Web 权益 | 未实现 | macOS、Windows、Linux;Webview 无法访问 Bearer Token 或签名 URL |
请先阅读已知差异
- Expo Web 仅支持 Standalone。Unified Expo 构建在 Web 上会明确失败,且不会回退到 Supabase。
- Kotlin 与 Expo Android 可以注册 FCM Token,但冻结的 v1 当前用户测试推送端点仅支持 APNs。
- Apple 与 Google 支持范围取决于原生平台及当前宿主部署的 OAuth audience 配置。
- Electron 与 Tauri 使用不同的桌面安全存储,并让 Unified 网络层远离 Renderer/Webview。
- Web 模板是宿主,不是 App API 客户端实现。
