watchOS and tvOS Support

Track purchases, subscription status and entitlements on Apple Watch and Apple TV with SuperwallKit, and handle placements without paywall presentation.

SuperwallKit supports watchOS and tvOS apps that need purchases, subscription status, entitlements, user attributes and events. Neither platform can show Superwall paywalls. Use your own purchase UI and the same configuration and identity APIs as on iOS.

Requirements

  • SuperwallKit 4.19.1 or later, installed through Swift Package Manager. CocoaPods does not support these platforms.
  • watchOS 8 or later, or tvOS 15 or later, and Xcode 26 (Swift 6.2) or later.
  • App Store products and signing configured for the app when using StoreKit purchases.

Set Up the SDK

Install SuperwallKit with Swift Package Manager, selecting version 4.19.1 or later and adding it to your watchOS or tvOS app target. Configure it at launch. To observe purchases made through your own purchase flow:

import SuperwallKit

let options = SuperwallOptions()
options.shouldObservePurchases = true
Superwall.configure(apiKey: "YOUR_PUBLIC_API_KEY", options: options)

You can identify users, set attributes, track placements, purchase and restore, use observer mode, read subscription status, entitlements and CustomerInfo, redeem web checkout purchases, and use SuperwallDelegate as on iOS. See Direct Purchasing and Observer Mode.

Placements Without Paywalls

register(placement:) still evaluates campaign audience filters:

  • A holdout or a placement with no matching audience is skipped and runs the feature block.
  • If a paywall matches and can be fetched, a non-gated paywall runs the feature. A gated paywall does not run the feature and calls the handler's onError instead.
  • If the matched paywall cannot be fetched, onError receives that error and the feature does not run.
  • onPresent and onDismiss are not called because nothing is shown.

Use PaywallPresentationHandler to handle skips and errors. getPresentationResult(forPlacement:) reports which paywall the user would see without loading its UI. Implicit placements such as app_launch do not trigger paywalls on these platforms.

Limitations

  • Paywalls, the debugger, Test Mode and Customer Center are unavailable. getPaywall, PaywallView and other APIs that require paywall UI are not available.
  • Paywall preloading does nothing. latestPaywallInfo is always nil, and isPaywallPresented is always false.
  • MMP install matching and Apple Search Ads attribution do not run on either platform.
  • tvOS does not schedule local notifications such as free-trial reminders.
  • watchOS reports connection type as Unknown and device interface type as watch.

How is this guide?

On this page