Monetization and entitlements
Free with ads, then Pro, all in RevenueCat
Overview
Prysm is free for a library of up to 50 games, with statuses, ratings, notes and hours, search, every game page, share links, the whole social layer, one roll a day, challenges, the wishlist and release reminders. Prysm Pro adds an unlimited library, no ads, Backlog stats, unlimited rolls and higher limits on saved games, release watches and platform connections. The free plan shows small banners (on the library home and the game page) and one rewarded ad in roulette that you choose to watch. RevenueCat ties it together: it makes the purchase, grants the entitlement, tells the backend through a webhook, and receives every ad event so subscriptions, the lifetime purchase and ad revenue sit in one dashboard. If Pro ends, nothing is deleted: games past the 50th become read-only, and you can still delete any of them.
How it works
- 1
The App Store or Google Play takes the payment. RevenueCat's SDK configures once at boot with the platform's public key; a development build uses the Test Store key.
- 2
After sign-in the RevenueCat customer is logged in with the Prysm account id, on every launch with a session, so purchases follow the account and not the device. Sign-out logs the customer out.
- 3
The paywall reads the current offering; Restore purchases lives in Settings and on the paywall.
- 4
RevenueCat sends a webhook for every subscription event to a backend function, which writes subscription state. It is the only writer of that state. The free-tier cap trigger and the ad gate read it.
- 5
The 50-game cap is a database trigger. Imports are exempt at import time. When Pro ends, the 50 games that stay editable are the oldest in your library; where an import added many at once, they are the ones you played most.
- 6
The ads SDK starts only after sign-in, after onboarding, and after Google's consent SDK says ads may be requested; on iPhone it uses Apple's tracking prompt. Until RevenueCat has answered whether you are Pro, no ad shows. A Privacy choices row in Settings reopens the consent form where the law requires it. Ads are limited to content rated Teen or below.
- 7
Every banner and rewarded-ad event (loaded, shown, tapped, failed, and its estimated revenue) goes to RevenueCat's ad tracker with its placement name. RevenueCat's AdMob adapter is native only, so the React Native app calls the tracker itself from the Google Mobile Ads callbacks, and AdMob's impression-level revenue is switched on so the revenue arrives.
- 8
The rewarded roll asks RevenueCat for a verification token, AdMob's server confirms the view to RevenueCat, and the app grants the roll only after RevenueCat verifies it.
Architecture flow
- 1
Consent
Google's consent form where the law asks, and Apple's tracking prompt on iPhone.
- 2
Pro known
No ad until RevenueCat has answered, so a subscriber never sees a flash of banner.
- 3
Purchase
The SDK buys through the store; CustomerInfo refreshes the Pro store in the app.
- 4
Webhook
RevenueCat tells the backend; the backend writes subscription state and nobody else does.
- 5
Ad events
Loaded, shown, tapped and revenue go to RevenueCat next to purchases.
Free and Pro
| Free | Pro | |
|---|---|---|
| Library | Up to 50 games | Unlimited |
| Ads | Small banners, one optional rewarded ad | None |
| Roulette | One roll a day, plus one per rewarded ad | Unlimited |
| Backlog stats | Computed, shown blurred | Completion rate, hours owed, status split, the genre you pause most |
| Share links, social, challenges, wishlist | Included | Included |
Key decisions
Free with ads, then Pro, not a hard paywall
A backlog tracker is only useful once your games are in it, so the first session has to be free and the paywall stays out of it. Hard paywalls convert better on average, but whether they fit depends on how long a product needs to show its value. Prysm needs a shelf first.
The backend decides who is Pro
The app asks RevenueCat's SDK whether it is Pro for the sake of the interface, but the database does not believe the app. The SDK buys, the webhook updates the server, and the server is the source of truth. That is why a modified app cannot grant itself Pro or get around the cap.
Ad revenue in the same place as subscriptions
Reporting ads to RevenueCat means one dashboard holds subscriptions, the lifetime purchase and ads, and customer lifetime value covers all three. Each placement is named, so the roulette ad and the banners show up separately.
Lifetime in the same entitlement
Lifetime is a non-consumable product granting the same Pro entitlement. It is priced so that it appeals to fans rather than bargain hunters, and the rest of the app never needs to know which product you bought.
What Prysm does not use yet
Customer Center is a candidate for a later release; cancelling goes to the store's own subscription settings, which both stores require anyway. The paywall is native rather than a RevenueCat Paywall so its art and benefit grid match the app.
The research behind it
Decisions on this page that rest on RevenueCat's published data and guides.
The hybrid model is the default shape
RevenueCat's State of Subscription Apps 2026 report describes apps pairing ads for free users with a subscription for the rest. Prysm is built that way from the start.
State of Subscription Apps 2026Hard paywall or freemium
RevenueCat's data shows hard paywalls converting better, and its write-up is clear that the answer depends on whether the product needs time to show its value. A backlog tracker does, so Prysm starts free.
Hard paywall vs. freemiumPricing a lifetime option
RevenueCat's lifetime subscriptions guide sets out when a one-time purchase belongs beside subscriptions and how to price it so it attracts committed users. Prysm's lifetime package follows it.
Lifetime subscriptions guideServer as the source of truth
RevenueCat's common architecture guide: the SDK makes the purchase, the webhook updates your server, and the server decides what a customer may do. It is why the cap and the ad gate read the database.
RevenueCat docs: Common architectureAds tracked alongside purchases
RevenueCat's manual ad integration is how a React Native app reports AdMob events and revenue to RevenueCat when the native adapter isn't available.
RevenueCat docs: Ad monetization, manual integration