How I use RevenueCat to offer users frictionless free trials in my app Personal Best
Discover how indie dev Shaun transformed his app's growth by building a ramp, not a wall.
I’m Shaun, an indie app developer based in London, UK.
Personal Best is my iOS app for generating insights from your workouts, using Apple’s HealthKit framework. Ever wondered what your fastest run in the last six months was? Your earliest swim? Your total distance covered this month? Personal Best gives you all this and more, along with best-in-class features like customisable images of your workouts for social media, home and lock screen widgets, and support for shortcuts.
In spring 2020, the UK was in lockdown and exercise was one of the only reasons we were allowed to leave our homes, which gave me a lot of free time to work on side projects and go running. I released the first version of Personal Best in May, intending it to be a short two week project to help me track my workouts, but I discovered a love for making apps and I never stopped improving it. Today it’s been downloaded thousands of times and has a dedicated community of users from across the world.
Hitting a wall
Personal Best is free with an optional in-app purchase of Personal Best Pro, which unlocks more insights and customisation. When deciding how to integrate the in-app purchase, using RevenueCat was a no brainer. I’d previously tried integrating an in-app purchase for a tip jar without using any third-party frameworks, and I found it quite challenging to get my head around. On the other hand, integrating RevenueCat was fast and simple, and I was able to launch the Personal Best Pro subscription in September 2022.
Using RevenueCat’s charts I saw my number of active subscriptions grow at first. The big jump in the chart below coincides with iOS 16’s launch, where Personal Best’s updates got some press coverage. After that, things slowed down. Between October and December I only gained a few new subscribers, and growth stagnated completely in January.
Turning the wall into a ramp
I knew I needed to do something to kickstart growth, but I was struggling for ideas. Marketing could help, but as an independent developer I didn’t have much of a budget for this. I decided to spend some time researching what my peers have done, and then I remembered a blog post I’d read a few months prior from Curtis Herbert, an indie developer who’s behind the popular Slopes app.
In the post, titled ‘Building Ramps, not Walls’, Curtis talks about how he was inspired by Apple Arcade to turn his app’s paywall into a payramp by making it as frictionless as possible to start a free trial, leading to to a 25% improvement in users starting trials. I decided to shamelessly copy his work and do the same to my own paywall. In the screenshot below, pressing the ‘Redeem your free 2 weeks’ button will instantly pop up iOS’s subscription confirmation sheet without users needing to go to a secondary paywall screen.
I expected an improvement, but I couldn’t believe how much difference this one small change made. I rolled out the change to the paywall in late January and the graph immediately turned upwards. Since then, my growth in active subscribers has maintained steady.
With RevenueCat, building this was very straightforward.
My app has a struct named SubscriptionManager which manages all communications with RevenueCat, which is initalized when the app first opens. I added a call to Purchases.shared.checkTrialOrIntroDiscountEligibility when the struct is initialised, which determines whether or not the user is eligible for a free trial. My struct stores this value as a local variable, then I added a computed property to check this variable and return true if the user is eligible for a free trial. Finally, I made a reusable view component named ProUpsellBanner which checks this property and updates its UI according to whether or not the user is eligible for a free trial. When users press the button to start their trial, it calls Purchases.shared.purchase, iOS’s payment sheet pops up, and their trial begins.
All of the above may sound complicated but the opposite is true. From start to end, the whole project took a couple of hours.
The future
I’m planning lots of updates to Personal Best for the coming months, including setting trackable goals and iPad support. As for RevenueCat, I’d really like to try some A/B tests in the future with the Experiments feature, and I can’t wait to see what features come next.
To get best-in-class workout insights and heaps of other features, download Personal Best from the App Store.
You might also like
- Blog post
Implementing in-app purchases and monetizing your Roku app: A step-by-step guide
A comprehensive guide to implementing and monetizing your Roku channel, from choosing the right strategy to technical tips and integration best practices.
- Blog post
How we built the RevenueCat SDK for Kotlin Multiplatform
Explore the architecture and key decisions behind building the RevenueCat Kotlin Multiplatform SDK, designed to streamline in-app purchases across platforms.
- Blog post
Inside RevenueCat’s engineering strategy: Scaling beyond 32,000+ apps
The strategies and principles that guide our global team to build reliable, developer-loved software