StartMyVPN - iOS Native VPNStartMyVPN - iOS Native VPN
Full-source iOS VPN client for StartMyVPN — WireGuard & OpenVPN, guest mode, Apple Sign-In, reCAPTCHA, StoreKit, 4 langStartMyVPN - iOS Native VPN
Full-source iOS VPN client for StartMyVPN — WireGuard & OpenVPN, guest mode, Apple Sign-In, r...
Overview
A complete, production-ready iOS VPN application built in Swift and SwiftUI, with a native Network Extension running both WireGuard and OpenVPN tunnels. Ships with the full Xcode project, Firebase integration, Apple Sign-In, reCAPTCHA v3 protection, in-app purchases with restore, AdMob, and SSL certificate pinning.
⚠ Requires the StartMyVPN SaaS backend. This app is a client for the StartMyVPN platform and will not function without it. You must have the backend running on your own server: StartMyVPN — WireGuard & OpenVPN SaaS Platform.
Why this template?
- Two protocols, one tunnel provider — WireGuard and OpenVPN both running in a single Network Extension.
- Modern SwiftUI + MVVM — async/await networking, Keychain-backed secure storage, shared App Group container.
- Guest mode + claim flow — users can start connecting instantly with a device-ID login, then upgrade to a full account later.
- Apple Sign-In & reCAPTCHA v3 — real bot protection on auth endpoints.
- 4 languages built in — English, Spanish, Arabic (RTL), and Turkish.
- Universal Links — password-reset emails open directly in the app.
- Driven by the backend — remote feature flags for ads, maintenance, force-update, and suspended accounts — no re-release needed.
Included screens
- Splash + app-config gate
- Guest terms → instant connect
- Login (with Apple Sign-In), Register, Forgot / Reset Password, Email Verification
- Claim Account (convert guest to full account)
- Home with connect button and live tunnel status
- Interactive SVG world map of server locations
- Server list with favorites and latency
- Subscription / pricing
- My Account, Settings, Sidebar, Change Password, Legal Documents
- Account deletion request
- Force Update, Maintenance, Suspended states
Documentation
A full step-by-step configuration guide is available at docs.startmyvpn.com, covering bundle IDs, capabilities, App Groups, entitlements, branding, Universal Links, and App Store Connect upload.
Features
- 100% Swift + SwiftUI (iOS 16+)
- Native Network Extension (Packet Tunnel Provider)
- WireGuard & OpenVPN tunnel support in a single extension
- MVVM architecture with async/await networking
- Email/password auth with email verification
- Sign in with Apple
- Google reCAPTCHA v3 on auth endpoints
- Guest / anonymous device login + "Claim Account" flow
- Forgot & reset password via Universal Links
- Change email and change password
- Account deletion request flow
- In-app purchases (StoreKit) with verify and restore
- Firebase Analytics & Crashlytics
- AdMob banner, interstitial & app-open ads
- SSL certificate pinning via a URLSession delegate
- Keychain-backed secure token storage
- App Group container shared with the tunnel extension
- Interactive SVG world map of server locations
- Free-tier and premium-tier server lists
- Localized in English, Spanish, Arabic (RTL) & Turkish
- Server-driven runtime state: force-update, maintenance, suspended
- Remote feature flags via the backend app-config endpoint
- Single-file theme & brand customization
- Clean, commented, production-grade code
Requirements
- StartMyVPN SaaS backend — required. This app is a client and will not function without it: StartMyVPN — WireGuard & OpenVPN SaaS Platform
- Xcode 15.0+ (16 recommended)
- macOS Ventura 14.0 or newer
- iOS deployment target 16.0+
- Swift 5.9+
- A paid Apple Developer Program membership (Network Extension capability requires it)
- A physical iOS device for testing (the Simulator does not support Network Extensions)
- A Firebase project (for Analytics and Crashlytics)
- A Google reCAPTCHA v3 site key registered for your domain
- (Optional) AdMob account if you want in-app ads
Instructions
The package includes a SETUP.md Quick Start at the project root. A full, illustrated
configuration guide is published at docs.startmyvpn.com.
Before you start
You must first install the StartMyVPN SaaS backend on your own server. This iOS app is a client for that platform and will not function without it: StartMyVPN — WireGuard & OpenVPN SaaS Platform
Quick Start
- Open
VPN.xcodeprojin Xcode. - Create a Firebase project, download
GoogleService-Info.plist, and replaceVPN/GoogleService-Info.plist. - Set a unique bundle ID and your Apple Developer Team for both the VPN and VPNExtension targets. The extension's bundle ID must be a child of the main app's.
- Enable the Network Extensions (Packet Tunnel) and App Groups capabilities on both targets, using the same group identifier.
- Update the App Group identifier in
KeychainHelper.swift,MyAccountView.swift, andPacketTunnelProvider.swift. - Update the extension bundle ID in
WireGuardAdapter.swiftandOpenVPNAdapter.swift. - Fill in
baseURL(your StartMyVPN backend),recaptchaSiteKey, andrecaptchaDomaininVPN/Utils/Configuration.swift. - Update the
applinks:value and App Group in both.entitlementsfiles. - (Optional) Set your AdMob App ID in
Info.plistand ad unit IDs inAdConfig.swift. - Rebrand: app icon,
AppLogo.png, theme colors, display name. - Archive and upload to App Store Connect.
The full guide includes backend endpoint expectations, Universal Links setup, a troubleshooting section, and step-by-step App Store submission notes.
Other items by this author
|
iOS App Reskin Service
Have your App reskinned to meet your needs.
|
$499 | Buy now |








