Adding subscriptions to a Flutter app: notes from MindNest
September 22, 2026 · 1 min read
MindNest is a mind-mapping app with flashcards and spaced repetition. The core app is free; MindNest Pro unlocks cloud sync, PDF export and knowledge paths, as a monthly or yearly subscription on iOS and Android.
One code path, two stores
Both stores sell "the same" subscription, but they describe it differently. I kept the rest of the app unaware of the store: the UI asks one question, is Pro active?, and a single entitlement layer answers it. StoreKit on iOS and Google Play Billing on Android sit behind that layer.
What the stores care about
- Clear paywall copy. Price, billing period and what Pro unlocks, all visible before the purchase button.
- Restore purchases. A visible restore button, so people who reinstall or switch phones get Pro back without paying again.
- Links to the terms and privacy policy on the paywall and in the store listing.
- Graceful failure. A cancelled or pending purchase should leave the app in a clean state, not a spinner.
Keeping the free tier useful
The free tier works offline and covers the core mind-mapping experience. Pro adds features that cost something to run, like cloud sync, which makes the upgrade easy to explain.
What I'd tell someone starting out
Design the entitlement check first, then build the paywall. Test the whole purchase flow on real devices with sandbox and test accounts on both platforms before submitting.