| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Native Swift apps for iPhone, iPad, and Apple TV. Supports multiple VPN protocols (WireGuard, AmneziaWG, OpenVPN, IKEv2, Stealth, WStunnel), per-Wi-Fi configuration, On-Demand mode, Siri/Shortcuts integration, and a home-screen widget.
apps.apple.com/us/app/windscribe-vpn/id1129435228
| Tool | Version |
|---|---|
| Xcode | 26.3 (pinned in CI) |
| iOS deployment target | 15.0 (iOS 18 minimum coming in the next major rebuild) |
| tvOS deployment target | 17.5 |
| Swift | 5.0 / 6.0 (mixed — targets are migrating) |
| Go | 1.22+ (for the WireGuard-go bridge) |
| Ruby | for fastlane (see Gemfile) |
| swiftlint | for lint checks |
Physical iOS/tvOS hardware is required to actually run a tunnel. Simulators build and launch, but cannot bring up a Network Extension.
Clone and open the project:
git clone <repo-url> iosapp
cd iosapp
open Windscribe.xcodeprojOverride Windscribe/Environments/Config.xcconfig with your own signing values. The default file points at Windscribe's team / bundle IDs:
APP_TEAM_ID = <your Apple Developer team ID> APP_BUNDLE_ID = <your reverse-DNS bundle ID>
The extension bundle IDs (PacketTunnel, WireGuardTunnel, SiriIntents, HomeWidget) are derived from APP_BUNDLE_ID automatically.
In each target's Signing & Capabilities tab, select your Apple Developer team. All five app-group-sharing targets must be signed with the same team.
Let Xcode resolve Swift packages (File → Packages → Resolve Package Versions).
Pick a scheme, pick a device, hit ⌘R. The build_wireguard_go_bridge.sh run script builds the WireGuard-Go bridge the first time you build (and re-runs when the SDK root changes). It needs go on your PATH or it will download a toolchain to a temp dir.
| Scheme | Purpose |
|---|---|
| Windscribe-Debug | Day-to-day development, points at production API |
| Windscribe-Staging | Staging API endpoints |
| Windscribe-Release | Release build, production API |
| WindscribeTV-Debug / -Staging / -Release | tvOS equivalents |
| WindscribeTests | Unit test target (runs on iPhone 16 Pro in CI) |
| HomeWidgetExtension | Build just the widget extension |
fastlane test # runs WindscribeTests on iPhone 16 ProOr from Xcode: select the WindscribeTests scheme and ⌘U.
swiftlint lint # or: fastlane lintConfig lives in .swiftlint.yml. Pull/merge requests are gated on lint passing.
New code follows the patterns in AGENTS.md. In short: SwiftUI + @Observable + async/await for anything new; existing UIKit/Combine/Swinject/Realm stays until it's rewritten.
Semantic Versioning — Major.Minor.Patch (BuildNumber), e.g. 3.10.1 (22) on TestFlight.
Bump the marketing version in one place: Windscribe/Environments/Config.xcconfig.
MARKETING_VERSION = 3.11.0 # iOS app + all extensions TV_MARKETING_VERSION = 1.0.4 # tvOS app (independent cadence) CURRENT_PROJECT_VERSION = 1 # build number — overridden by CI
The xcconfig is the single source of truth; every target's Info.plist reads $(MARKETING_VERSION) / $(CURRENT_PROJECT_VERSION) from it. Do not edit version values inside project.pbxproj — those entries were removed during consolidation.
The build number is injected at archive time by fastlane iOSTestFlight via xcargs CURRENT_PROJECT_VERSION=$CI_PIPELINE_IID (with a TestFlight latest+1 fallback for local archives), so CI builds never mutate the project file.
Third-party licenses: ACKNOWLEDGEMENTS.md. License: LICENCE.md.
| Back | FazBrowse Home | New Git URL |