A cross-platform Skip wrapper around the native
Superwall paywall SDKs, so a single Swift API drives
remotely-configured paywalls on both iOS and Android — in the same style as
skip-crisp, skip-firebase, and skip-revenue.
Note: this repo will likely move under the skiptools org in the future.
- iOS / macOS →
SuperwallKit(import SuperwallKit):Superwall.configure,Superwall.shared.register,identify,setUserAttributes,reset. - Android → the
com.superwall.sdk:superwall-androidMaven artifact (com.superwall.sdk.Superwall,Superwall.instance.*), declared inSources/SkipSuperwall/Skip/skip.yml.
Superwall ships first-class native SDKs on both platforms but no cross-platform
binding. Wrapping the two native SDKs behind one Swift surface
(SuperwallManager) keeps native paywall UX and lets app code stay
platform-agnostic. The public API deliberately mirrors the Superwall iOS SDK
so it reads the same as the upstream docs.
SuperwallManager.shared.configure(apiKey:) // once, at launch
SuperwallManager.shared.identify(userID:) // after sign-in
SuperwallManager.shared.setUserAttributes(_:)
SuperwallManager.shared.register(placement:params:feature:) // @MainActor
SuperwallManager.shared.reset() // on sign-outOn native macOS, register uses the dashboard's presentation style, so a
Fullscreen paywall covers the whole window. To show it as a sheet instead,
present SuperwallPaywallSheet(placement:params:onDismiss:onEntitled:) in the
app's own .sheet (macOS only; onEntitled follows register's feature
semantics).
Superwall presents its own paywalls (a dedicated window on iOS, a
SuperwallPaywallActivity on Android), so register needs no host view
controller. With no PurchaseController passed to configure, Superwall
handles StoreKit / Google Play Billing and subscription status automatically.
The consuming app's AndroidManifest.xml must grant the Billing permission and
declare Superwall's paywall activity (per the Superwall Android quickstart):
<uses-permission android:name="com.android.vending.BILLING" />
<activity
android:name="com.superwall.sdk.paywall.view.SuperwallPaywallActivity"
android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"
android:configChanges="orientation|screenSize|keyboardHidden" />Confirmed against real iOS (Xcode) and Android (Gradle) builds:
- The SuperwallKit SPM product (
SuperwallKit,Package.swift,from: 4.19.0, the first release with native macOS support).swift buildon a macOS host compiles the wrapper against the real SuperwallKit instead of the no-op fallback. - The Superwall Android Maven artifact (
Skip/skip.yml,com.superwall.sdk:superwall-android:2.7.20) — thecom.superwall.sdk.Superwallsymbols match (configure,instance.register,identify,setUserAttributes,reset).