New capability
A real mobile foundation, not a webview
s-m-r-t now shares offline behavior, authentication, network contracts, evidence capture, and presentation state across native Android and iOS apps.
Offline is designed into the write path
A SQLDelight queue stores durable requests, replays them through a shared authenticated client, and uses idempotency keys so retrying a capture does not duplicate it. Offline packs are integrity-checked immutable snapshots with localized text resolution.
Native capabilities sit behind small seams
Barcode scanning, speech, on-device models, secure credential storage, location, evidence bytes, and auth launchers remain platform implementations of shared contracts.
- Android: Compose, ML Kit, speech, Gemini Nano, Keystore, Custom Tabs.
- iOS: SwiftUI, VisionKit, Speech, Foundation Models, Keychain, ASWebAuthenticationSession.
- Shared: StateFlow presenters, session bootstrap, packs, evidence, networking, and queue policy.
The server contract is part of the framework
smrt-users provides reusable /api/mobile handlers for brokered PKCE login, session bootstrap, device registration, and multipart upload. App-specific bootstrap data belongs in an explicit extras object.