| Roach motel: sign up online, cancel by phone | ROSCA/state-law violation; FTC dark-pattern enforcement; chargebacks | Self-serve cancel, same medium, ≤3 clicks |
| Hidden auto-renewal / silent trial→paid charge | Refund storms; App Store rejection; legal exposure | Exact charge date at consent + reminder email |
| Annual price shown as monthly with tiny "billed annually" | Perceived bait-and-switch at checkout | Both numbers adjacent, equal visual weight |
| Confirmshaming decline copy ("No thanks, I hate saving money") | Documented dark pattern; erodes trust | Neutral decline: "Maybe later" / "No thanks" |
| 4+ sequential save-offer screens on cancel | Roach-motel variant; FTC scrutiny | One save offer, then confirm |
| Hard paywall before any value shown, no trial | Nothing to want yet; near-zero conversion | Trial, feature preview, or metered free tier first |
| Upgrade nag on a timer, context-free | Trains banner blindness toward all prompts | Trigger only at limit and feature moments |
| Deleting data when a plan lapses | Data hostage; reputational damage | Read-only lock; export always available |
| Fake urgency (looping countdown timers) | Deceptive countdown = FTC/EU DSA dark pattern | Real deadlines only, or none |
| Pre-selecting the most expensive plan | Sneaking; refunds and distrust | Preselect the honest recommendation (middle tier) |
| Burying Restore Purchases | App Store rejection; locked-out paying users | Visible on every paywall screen |
| 40-row feature matrix as the only pricing info | Choice paralysis | 5–8 differentiators per card; matrix below fold |
| Paywall "X" that appears after a delay | Manipulative friction; review-team flag | Dismiss visible immediately on soft paywalls |
| Silent price increase on renewal | Refunds, chargebacks, regulator attention | Advance notice email with the new price and a cancel link |
| Treating failed payments as churn | 20–40% of churn is involuntary | Dunning flow: retries + grace period + update-card path |
| "New customers only" deals shown to subscribers | Cancel-to-rebuy gaming; loyalty resentment | Match or hide promotional pricing for existing users |
| Cancel button styled to be invisible (gray-on-gray) | Manipulative friction; ROSCA/state-law violation; FTC dark-pattern enforcement | Cancel styled like any other secondary action |
| Grandfathered pricing revoked without notice | Highest-loyalty users churn angriest | Honor it, or migrate with long notice and a better offer |
| Trial countdown via daily push notifications | Anxiety marketing; notification-permission revokes | Passive in-app indicator + one email near the end |
| Proration math hidden until the invoice | Perceived overcharge; support load | Exact prorated amount on the confirm screen |