← All work

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.

Stack

Swift 5, SwiftUI, StoreKit 2

Link

Claire Skincare →

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