A paywall teardown: where subscription flows lose trust
A screen-by-screen teardown of a composite subscription flow, with the trust breakers we see most, what Apple and Google's policies say about each, and the fix.

Most paywalls don't fail because the price is wrong. They fail because somewhere between the first offer and the first renewal, the user starts to feel handled. They feel it, they tell their friends, and then they write a one-star review that mentions the word "scam".
For this teardown we built a composite: a fictional membership app for guided workouts, stitched together from patterns we see again and again in app reviews and audits. It is not a real app and it doesn't copy any one product. Every screen below has one or more trust breakers, a note on what the store policies say, and the fix we'd make.
Screen 1: the paywall after onboarding
The user has just answered five questions about their goals. The last step says "Building your plan..." with a progress bar, and then the paywall slides up full-screen: a hero photo, three benefit bullets and a large "Continue" button.
What breaks trust. The close button is a thin grey X in the top-left corner, it appears only after three seconds, and it's about 20 points wide. On a busy photo it's close to invisible. The user who wants to look around first feels trapped, and the ones who find the X feel that they got away with something. Neither is the relationship you want.
Google Play's subscriptions policy lists a dismiss button that is "missing or not clearly visible" as a violation. Apple's App Review Guidelines don't name close buttons, but section 5.6 says apps should never "trick them into making unwanted purchases".
The fix. A visible close control from the first frame, at least 44 by 44 points, with enough contrast against the photo. If there is a free tier, say so on the paywall itself: Google's policy also flags promotions that don't make clear a user can use content without a subscription, when that's possible.
Screen 2: choosing a plan
Two plans sit side by side. The annual plan is pre-selected, has a "Most popular" badge and a big "€4.99/month". In small grey text below: "€59.99 billed annually". The monthly plan shows "€9.99/month".
What breaks trust. Two things. The pre-selection does the user's choosing for them, nudging them into the larger charge. And the annual plan leads with a monthly figure that the user will never actually be charged. They'll see €59.99 on their statement, not €4.99.
Google is unusually specific here. Its list of non-compliant examples includes "Annual subscriptions that most prominently display their pricing in terms of monthly cost." Apple's guideline 3.1.2(c) asks that, before asking someone to subscribe, you "clearly describe what the user will get for the price".
The fix. Lead with the amount the user will be charged and how often: "€59.99 per year". Show the monthly equivalent as a secondary line if you like ("about €5 a month"). Either select nothing, or select the plan you'd honestly recommend to most people and be ready to defend that choice. A "Most popular" badge should be true.
Screen 3: the free trial
A toggle reads "Free trial enabled" and the button changes to "Start free trial". Under the button, in 11-point grey: "7-day free trial, then €59.99/year. Cancel anytime."
What breaks trust. The terms are present but designed to be missed. "Free trial enabled" hides that the trial is the start of a paid subscription. "Cancel anytime" says nothing about how. And the trial toggle itself, flipping prices and labels on the same screen, makes it easy to start the wrong thing.
Google's policy calls out offers that "do not clearly explain that the user will be automatically enrolled in a paid subscription", offers that don't say how long the trial lasts, and SKU names like "Free Trial" for something with an auto-recurring charge. It also asks you to tell users how to cancel if they don't want to convert. Apple says apps that try to trick users into subscribing "under false pretenses" or with bait-and-switch practices will be removed.
The fix. Put the conversion in the main text, at the same size as the benefits: "Free for 7 days. Then €59.99 a year, starting 15 September, unless you cancel before then." Use the real date. Drop the toggle; offer the trial as the plan, not as a switch. Name the button for what happens: "Start 7-day free trial".
Screen 4: the system purchase sheet
Apple's and Google's own payment sheets appear here, and on these the app has little say. That's a good thing. The trust problem is what comes just before: some flows ask the user to tap through two or three nearly identical screens, each with a large button in the same place, so that a habit tap ends on "Subscribe".
Google lists exactly this: "Multiple screens in the purchase flow that lead users into accidentally clicking the subscribe button." The fix is to keep it to one decision screen. If you have something to explain, explain it before the paywall, not between the paywall and the payment sheet.
Screen 5: after purchase
A confetti animation, "Welcome to Premium!", and straight into the workout. Nothing about the trial end.
What breaks trust. Nothing, yet. That's the issue. The trust breaks a week later, when the user is charged €59.99 without having thought about the app since day three.
The fix. A small confirmation that repeats the terms and the date, and a reminder before the trial ends. A short note two days before ("Your trial ends on Friday. You'll be charged €59.99 for a year unless you cancel.") costs you some conversions. It saves you refunds, chargebacks, support tickets and the review that says you tricked them.
Screen 6: cancelling
Settings has no "Subscription" row. The user finds "Membership" under Account, which opens a page with plan details and a link: "Need help?". That opens a chat. The chat offers a discount, then a pause, then a survey, and only then says to cancel through the App Store.
What breaks trust. Everything. A cancellation maze turns a customer who might have come back into one who never will.
Google's policy requires apps to "clearly disclose how a user can manage or cancel their subscription" and to include access to "an easy-to-use, online method to cancel the subscription"; it lists a missing link to manage and cancel subscriptions as a violation. On iOS, StoreKit offers the system's own manage-subscriptions sheet, which you can open from inside your app with showManageSubscriptions(in:)) in UIKit or manageSubscriptionsSheet(isPresented:) in SwiftUI. It shows the active plan and lets people upgrade, downgrade or cancel.
struct MembershipView: View {
@State private var showManage = false
var body: some View {
Button("Manage or cancel subscription") { showManage = true }
.manageSubscriptionsSheet(isPresented: $showManage)
}
}
The fix. A "Subscription" row in Settings, one tap to the system sheet. If you want to offer a pause or a cheaper plan, offer it once, on one screen, with "Cancel subscription" as an equally clear option next to it.
Trust breaker vs fix
| Trust breaker | What the policy says | Fix |
|---|---|---|
| Close button hidden, delayed or tiny | Google: dismiss button "missing or not clearly visible" is a violation | Visible close from the first frame, 44 × 44 pt minimum |
| Pricier plan pre-selected | Apple 5.6: never "trick them into making unwanted purchases" | No pre-selection, or an honest recommendation |
| Annual plan led by a monthly price | Google: annual pricing shown most prominently as monthly cost is a violation | Lead with the amount actually charged and the period |
| Trial terms in small grey text | Google: must explain auto-enrolment and trial length; Apple 3.1.2(a): no bait-and-switch | Conversion date and price in the main copy |
| "Free trial" toggle that changes the plan | Google: misleading SKU names for auto-renewing subscriptions | Offer the trial as the plan, name the button for what happens |
| Several near-identical screens before paying | Google: multiple screens leading to accidental subscribe | One decision screen |
| No reminder before the trial converts | Google: tell users "how and when a free trial will convert" | Confirmation with the date, and a reminder before it ends |
| Cancellation hidden behind chat or support | Google: an easy-to-use online method to cancel is required | A Settings row that opens the system manage-subscriptions sheet |
A note on the law
Store policy is the floor, not the ceiling. In the US, the FTC's 2024 "click-to-cancel" amendments to its Negative Option Rule were vacated by the Eighth Circuit on 8 July 2025, days before its main requirements were due to take effect. The court ruled on procedure, not on whether hard cancellation is acceptable. In March 2026 the FTC asked for public comment on a new rulemaking, and the release names misleading disclosures and making cancellation difficult as harms. Other consumer protection laws continue to apply in the US and elsewhere. We're designers, not lawyers: check with yours.
What we tell clients
Every dark pattern on a paywall is a loan against next year's retention.
The trust breakers above all raise short-term conversion, which is why they spread. They also raise refunds, chargebacks, store complaints, support load and the risk of a rejected update. The honest version converts fewer people who didn't mean to subscribe and keeps more of the people who did.
- Close button visible from the first frame
- Price shown as the amount charged and the billing period
- No pre-selected plan unless you'd defend it to a customer
- Trial length, conversion date and price in the main copy
- One decision screen before the system payment sheet
- A reminder before the trial converts
- A Subscription row in Settings that opens the system manage sheet
Sources
- App Review Guidelines (3.1.2 Subscriptions, 5.6 Developer Code of Conduct) · Apple Developer
- Auto-renewable subscriptions · Apple Developer
- showManageSubscriptions(in:) · Apple Developer Documentation
- Subscriptions (Play Console Help) · Google Play
- Custom Communications, Inc. v. Federal Trade Commission, No. 24-3137 (8th Cir. July 8, 2025) · US Court of Appeals for the Eighth Circuit
- FTC Seeks Public Comment in Response to Advance Notice of Proposed Rulemaking Regarding Negative Option Marketing Practices · Federal Trade Commission


