Native iOS app · 2026
Claire
A native iOS client for Claire Skincare's personalized skincare platform — custom routines, guidance, and progress tracking — built as a SwiftUI shell with real native bridges.
Claire wraps the Claire Skincare web app in a native container: a SwiftUI app hosting a WKWebView with a custom user agent, locked pinch-zoom and portrait orientation, a branded splash screen, and routing that keeps the product inside the app while sending store, brand, terms, and privacy pages to Safari.
Five native bridges do the work the web can't. StoreKit 2 sells monthly and yearly Claire+ subscriptions with restore, subscription management, and server-side transaction verification. Push registration forwards the APNs token to the backend, which drives morning and evening routine reminders that deep-link into home or progress. Google and Supabase OAuth run through ASWebAuthenticationSession and hand the session back into the web view. One-shot location powers local UV guidance, and camera and photo-library permissions cover skin progress photos and face scans — granted only on Claire hosts.
The app ships as version 1.0 for iPhone on iOS 15 and up, on portrait phones, with zero third-party dependencies — every bridge is Apple frameworks only.
What it does
Hybrid shell
SwiftUI with a WKWebView container, splash screen, orientation and zoom locks, and smart external-link routing.
Subscriptions
StoreKit 2 monthly and yearly Claire+ plans with restore, management, and server verification.
Push + reminders
APNs registration with backend token sync, morning and evening routine notifications, and deep-linked payloads.
Native OAuth
Google and Supabase sign-in outside the embedded web view, converted back into an in-app session.
UV + camera
One-shot location for sun guidance and camera access for progress photos and face scanning.

Built with
- Swift 5 with SwiftUI
- WebKit WKWebView container
- StoreKit 2 subscriptions
- UserNotifications with APNs
- CoreLocation for UV guidance
- AuthenticationServices for OAuth
- Zero third-party dependencies