The Superfone iOS app
Live on the App StoreSolo iOS engineer · Superfone · 2026
Built the native iOS app from an empty Xcode project to a live App Store release in under three weeks: CallKit, offline-first data, and real SIP/PSTN calling.
In early 2026 I took the iOS app from a blank project to a 1.0 release on the App Store in under three weeks. Calling apps are deceptively hard on iOS: the phone itself is the competition, and the OS gives you a strict, opinionated framework you have to work within.
What I built
-
A full Swift / SwiftUI app with a proper launch/onboarding flow and OTP-based auth.
-
CallKit + PushKit, done correctly. This is the part that breaks every naive VoIP app: ghost ringing, “already on a call” states, Do-Not-Disturb compliance, and accepting a call across both SIP and PSTN bridge paths. Getting the native call UI to behave like the system Phone app is most of the work.
-
Offline-first by design. Contacts and call logs persist locally with SwiftData, kept in sync by a background actor that runs full and delta syncs off the main thread, so the UI never janks while thousands of contacts reconcile.
-
Remote feature flags backed by object storage, plus real-time state sync and deep links for missed-call, reminder, and messaging events.
What I took from it
Shipping fast and shipping a calling app are usually opposites. The way to do both is to spend your time only on the genuinely hard, platform-specific parts (CallKit state, threading, sync correctness) and refuse to over-build everything else.