View Subscription Status

Subscriber sees their current plan, renewal date, and price from within the app.

Status: partially-live. Backend returns subscription status as part of the user profile endpoint. Frontend subscription screen exists but RevenueCat integration is not yet wired up.

Who Can See This

Any user with type subscriber (including those in pending cancellation state).

What Is Shown

  • Plan name — Introductory Price or Premium Price.
  • Renewal date — the date the subscription is scheduled to renew or expire. During a billing-issue grace period the renewal date remains the original renewal date — it does not update to the grace period expiry date.
  • Price — the locked-in yearly price for this subscriber's plan, fetched dynamically from RevenueCat.
  • Pending cancellation notice — if the user has cancelled but the billing period has not yet ended, a notice is shown with the subscription end date and a Manage Subscription deeplink to the store's subscription management screen.
  • Billing issue notice — if a renewal payment has failed and the grace period is active, a notice is shown with a Manage Subscription deeplink so the user can update their payment method. This notice is cleared when billing recovers or access is revoked.

Free User View

Users with type: free see a free plan indicator on the Profile page in place of the subscription status screen, with a Subscribe button that opens the purchase flow.

Lapsed User View

A user whose subscription has lapsed sees the free plan indicator and a Subscribe button on the Profile page. If the user owns frozen assets, each frozen asset displays its own freeze indicator showing the day-30 deletion deadline. The freeze state is on the asset itself — there is no separate profile-level banner.

Where It Is Shown

The subscription status screen is accessible from the Profile page at any time while the user is a subscriber.

What Happens Next

The user can navigate to Cancel Subscription via the Manage Subscription deeplink, or tap Restore Purchases if entitlement state appears out of sync.

Failure Cases

  • RevenueCat price fetch fails — the price field shows a loading error. The plan name and renewal date are still shown if available locally.