---
title: "Build an Apple StoreKit paywall"
description: "Sell directly through Apple with native StoreKit products and subscription views."
---
A direct StoreKit paywall keeps the purchase architecture inside Apple's frameworks. It is a strong fit for a focused Apple-only app with a small catalog and stable pricing strategy.

## Choose the native presentation

-   **ProductView:** present one product using Apple-provided purchase behavior.
-   **StoreView:** merchandise a collection of in-app purchase products.
-   **SubscriptionStoreView:** present plans in an App Store Connect subscription group, including eligible introductory offers.
-   **Custom SwiftUI paywall:** design the complete interface while using StoreKit for product data, purchases, and verified access.

### 1. Create products in App Store Connect

Choose the product type, identifiers, pricing, localization, and subscription group. Keep a record of every exact identifier used by the app.

### 2. Ask Superapp for StoreKit 2

Describe what is paid, when the paywall appears, and whether you want Apple's native subscription view or a custom SwiftUI design.

### 3. Unlock from verified state

The app must evaluate verified transactions and current subscription status whenever protected content appears. Never grant permanent access from a local preference alone.

### 4. Handle the lifecycle

Account for pending purchases, cancellation, expiration, billing retry, revocation, upgrades, downgrades, and restored purchases.

## The tradeoff

StoreKit removes an external subscription service and gives you native Apple UI, but the app owns more of the state model, diagnostics, analytics, and backend coordination. A custom paywall change may also require a new app release when its content is hardcoded.

:::tip
Ask for a direct StoreKit implementation explicitly. If your request emphasizes subscription analytics, remotely managed paywalls, or cross-platform entitlements, RevenueCat is usually the better fit.
:::
