Subscription paywall
The screen that asks for a recurring payment: plans, price, trial terms, and one obvious button between the user and the good features.
See it
What it is
A subscription paywall is the one screen where your app asks for recurring money. The standard anatomy is boring on purpose: a headline naming the outcome (not the feature list), three to five benefit lines, a plan selector with annual preselected and a badge showing the saving you actually calculated from the store's prices, the trial and renewal terms in plain text, one full-width button, and small links for restore purchases, terms, and privacy.
Choose the flavor by how much value you can prove first. A hard paywall blocks everything after onboarding and converts high but kills top of funnel. A soft paywall lets people in and gates the good parts. A metered paywall gives N free uses, then asks. Contextual paywalls, triggered at the moment someone taps a locked feature, beat a generic paywall shoved into onboarding, because the user already has a reason.
Gotcha: this screen is a review-rejection magnet. Both stores want price, billing period, and exactly what happens when the trial ends, stated in plain text. Getting people their existing purchase back works differently per platform, though. Apple expects a user-triggered restore mechanism for restorable products, which in practice means a visible 'Restore Purchases' control, and a missing one is a routine rejection. Google Play expects the app to re-query purchases and reinstate entitlements on its own, so on Android the requirement is that nobody ever gets charged twice, not that a button exists. Ship the button anyway: it costs one row and saves support tickets. A close button that is invisible, delayed, or 3 pixels wide reads as a dark pattern and gets bounced. Also pull prices from the store at runtime: hardcoded '$9.99' is wrong in every other currency and country.
Ask AI for it
Design a mobile subscription paywall screen. Before rendering anything commercial, fetch the store's product metadata and the current user's trial or intro-offer eligibility, and drive every number from that. No hardcoded price, currency, discount percentage, or trial length anywhere in the code. Layout top to bottom: a small dismiss X in the top-left, an outcome-focused headline, one hero visual, four benefit rows with checkmark icons, then a two-card plan selector (annual preselected, monthly secondary, each showing the store's localized price and a per-month breakdown, with a savings badge only when the saving is computed from the two fetched prices), then one full-width primary CTA whose label is built from the offer actually returned for this user (trial wording only if they are eligible, plain purchase wording otherwise), then a single small line of legal text stating the renewal price and cancel-anytime terms from the same source, then tiny tertiary links for Restore Purchases, Terms, and Privacy. Define the loading and fetch-failed states too. Keep it one screen with no scroll on a 6.1-inch phone, respect safe-area insets, and make every tap target at least 44pt.