Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Hey, I’m definitely hearing the feedback about subscriptions. Thought I’d provide some transparency in terms of how I arrived at my pricing model, which was two-fold:
- 1. The pricing models of other Screen Time apps
- 2. The effort it took for me to finish the app (~10 months of 8-hour days working on this app after my day job) and the continued effort it’ll take me to maintain the app (bug fixes + new feature releases)
- I’ll start with the first since this is at the core of how I arrived at my pricing. I took a look at the top Screen Time app currently on the App Store, Opal, and simply priced myself at half of what they charge. Currently, Opal charges users in the following way for their pro offering:
- * $99.99/year for their yearly
- * $19.99/month for their monthly
- * $399 for their lifetime
- While Opal and Guest Mode were created with completely different goals in mind, I felt that Guest Mode could do everything Opal could do with Screen Time (with schedules and time limits) while having more powerful functionality with being able to do more robust device restrictions. So in my head, it felt fair to base my offering on a 50% discount of their established pricing. Granted, Opal has a few social features and try to make focus time more fun with pretty cool art and nice quotes so the analogy might not be perfect, but it still felt close enough to use as my reference.
- However, I made a few mistakes here:
- 1. I don’t have the reputation with Guest Mode to be charging that much money. In comparison, Opal is an established company with multiple iOS engineers working on their app and has raised over $4.3 million in funding. They also have a large user base who trust them with that pricing. I’m just getting started with this app and you all have been nice enough to be my first users. Even if I’m doing it at a 50% discount in comparison to Opal, $9.99 / month is too much to be charging you guys. I’ll be doing a launch sale that will reduce the price to $4.99 / month and $29.99 / year.
- 2. Opal offers a lifetime membership. I, unfortunately, did not include this part with the launch of the app. The reason I didn’t yet was because engineering the StoreKit layer for my app (the part that talks to App Store billing) was itself a challenge learning and I had to make compromises to get my app out in time. To make things easier during development, I used a built-in iOS SDK SwiftUI view called SubscriptionStoreView to display the UI for the subscription options and manage the actual subscription purchasing flow. This view is stupid easy to work with because all I have to do is set up the subscriptions on the App Store website and pass in an id to this view, and this view takes care of the rest for me. However, this view from Apple is also very limited in customization and doesn't support showing one-time purchases along with subscription purchases (baffling, I know): https://developer.apple.com/documentation/storekit/subscriptionstoreview . More details on that here if you're curious: https://www.revenuecat.com/blog/engineering/storekit-views-guide-paywall-swift-ui/. In order to properly support one-time purchases, I’ll have to write this UI from scratch and do some more setup work on the App Store site. And then there’s the whole annoying App Review for the product I’ll have to go through again (didn’t even mention the annoying rejections I was initially facing over this from my reviewer here). I need time in a future update to work this all out. However, it was a mistake to take the shortcut of using SubscriptionStoreView. I plan to add this lifetime membership feature in the next release.
- 3. The free-tier usage of my app needs to be more open. Based off the feedback I’m receiving here, people have blown through their first 3 free mode activations fairly quickly. I’ll be increasing the amount of mode activations you can do as a free user of the app in a future update.
- The second reason I use a subscription model is due to the development effort of building the app.
- Before starting this project, I had a complete aversion to any sort of software subscription and would actively question the intentions of any indie developer that decided to do that.
- “Why do they need money from me every month or year? They’re not even doing anything anymore.”
- “It’s such a simple app, I bet they only spent like a few weeks making this.”
- “Are they greedy scumbags?”
- Building this app over the last year helped me understand why modern-day indie devs have been opting for a subscription model.
- I started development for Guest Mode on June 10, 2024. The idea in my head at the time was simple, just publish an app using the Screen Time functionality that would allow users to block everything except the apps they want to allow. At the time, I thought this would only take a few weeks and I could call it a day. I had experience as a software engineer for my day job after all, how hard could this simple app be? This app turned out to be the most complex project I’ve ever worked on.
- Let me do a quick breakdown of the major components I had to build for the app:
- * Screen Time API Integration
- * This is the most important piece as this is what blocks all the apps so let me start here. As streamlined as Apple is for certain experiences as a developer, they are sometimes really bad with API documentation, and the Screen Time API currently takes the cake for how undocumented and bug-riddled it is. Trying to learn and implement things with it properly took me upwards of three months. And that was just for the initial implementation. Once I had more UI built that I could work around, it pretty much took me a few more months until all the other pieces like the time limit and schedules were working.
- * Oh, and this doesn’t mention a MAJOR issue I ran into during the App Store App Review process. Previously, Guest Mode had the ability to “hide” apps. It was using a documented API from Screen Time to do this. But during the App Review process, my reviewer rejected the app and told me that this was an undocumented use of the API, despite the words on the API literally saying that the API “hides blocked applications”. Other apps on the App Store also use this API so it was odd to face a rejection like that explicitly calling out that feature. But this forced me to spend all of last week removing this feature from my app, as it was tightly coupled with how the app functioned during the mode creation process.
- * Biometric Authentication
- * Guest Mode had to work with biometric data to allow users to protect their Modes behind it. The API for this is simple enough, but getting it to work so that the UI was always hidden (similar to how Apple’s Passwords app works) was a huge challenge for me.
- * Persistence
- * I architected this layer so that all of the app’s sensitive data was encrypted and unable to be accessed even if a person had folder access to your phone (the ability to view all the files stored on your device via USB or otherwise). The Modes also support encrypted iCloud sync.
- * UI
- * By far the biggest piece of work for me was building the UI, which took me majority of the 10 months to build. I went back-and-forth on the designs for so many of these views, as well as the color design and tiny little animations you see throughout. This includes all the views for:
- * The authentication screens (both at launch and when you enable biometric authentication)
- * The Mode grid + list views
- * The Mode card view
- * The Mode Settings edit view
- * The Mode Label Settings edit view
- * And each of these major views all have different subviews that themselves took weeks to individually design and build
- There’s so much here I’m not touching in terms of what I implemented, but I think you get the point, and it’s something every indie dev here can relate to. As the solo developer, you are responsible for everything in your app. On top of engineering the app itself, you have to create:
- * The App Icon
- * The screenshots and marketing messages
- * The website for the app
- * The promo video for the app
- The only way I can keep my sanity in continuing to build apps like this is if I can do this full-time without needing to work my day job.
- To those asking here if I have a recurring server cost, I don't (not including the negligible cost for the website). This app doesn't track your data or display ads. But even with apps that have a server, the server cost isn't what you're paying for with a subscription. You're actually paying for the R&D cost of the software engineers. They're the most expensive part, not the servers.
- All that being said, I'm not entitled to your money. In fact, I'm not even entitled to an app download. I'm really grateful for all the attention I've gotten with this app, even with all the mistakes I've made so far with the launch. I hope my app is good enough and has a powerful enough value proposition to justify a subscription and help me make this a full time thing. But if it doesn't, my goal is to make the free-tier good enough for people that only need to use this app occasionally when a friend or nephew comes over and for you to still have a great experience with the app.
- Hope that clarifies my thoughts on things :D
- P.S. This is terrible timing, but I've been on vacation for the last 2 weeks overseas, so apologies if I've been really slow to respond to everyone here. The only reason I even posted this app was because the App Store App Review only accepted my app a few days ago. I'll be back home in a few days and will be able to begin work on an update for everything then.
- tl;dr
- * I’ll be adding a lifetime purchase in the next update, I didn’t have it before due to time / engineering constraints
- * I’ll be doing a launch sale where the monthly price is $4.99 / month and yearly price is $29.99 / year
- * I hope I can continue adding more features to this app to justify what I'm charging everyone here
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement