A "Free Trial" toggle that flips the CTA between trial and full-price products treats trial eligibility as a user choice — but Apple and Google determine eligibility server-side based on prior introductory offer usage. Non-eligible users tapping "Start Free Trial" get charged immediately with no warning, which generates refund requests, chargebacks, and 1-star reviews citing deceptive billing. This also puts the paywall in the crosshairs of App Store Review Guideline 3.1.2(a) on subscription clarity and equivalent Play Store policies on misleading pricing.
Medium because deceptive trial UI drives chargebacks and store rejections but does not halt shipping outright.
Drop the trial/non-trial toggle entirely and let the platform's eligibility check drive CTA copy. Query eligibility before rendering, then render one button whose label matches the user's actual purchase terms:
const eligibility = await Purchases.checkIntroductoryPriceEligibility([productId]);
const isEligible = eligibility[productId] === IntroEligibilityStatus.INTRO_ELIGIBILITY_STATUS_ELIGIBLE;
<SubscribeButton
title={isEligible ? 'Start 7-Day Free Trial' : 'Subscribe — $9.99/month'}
/>
Never hide recurring price in small gray text beneath a large "Free" headline — Apple and Google both reject this pattern.
app-store-iap-subscriptions.subscription-lifecycle.no-trial-togglemediumpackage.product.introductoryPrice != null — but this does not confirm user eligibility; use checkIntroductoryPriceEligibility([productId])."PaywallScreen.tsx renders a 'Free Trial' toggle that switches between TRIAL_PRODUCT_ID and REGULAR_PRODUCT_ID purchases — trial eligibility should be determined by platform, not user toggle" or "Trial CTA shown to all users without checking introductory offer eligibility — non-eligible users see 'Start Free Trial' but are immediately charged"// RevenueCat
const eligibility = await Purchases.checkIntroductoryPriceEligibility([productId]);
const isEligible = eligibility[productId] === IntroEligibilityStatus.INTRO_ELIGIBILITY_STATUS_ELIGIBLE;
<SubscribeButton title={isEligible ? 'Start 7-Day Free Trial' : 'Subscribe — $9.99/month'} />