Image for The day my app got thousands of downloads and in-app unlocks

The day my app got thousands of downloads and in-app unlocks

What happens when a quiet app gets almost a thousand new downloads, and in-app unlocks each hour?

Published: Dec. 8, 2022
App Store

This year, my document scanner app Scan it was part of the fantastic Indie App Santa project. Going in, I had yet to learn what to expect beyond some significant amount of downloads.

Scan it was featured on December 5, so I felt the urge to wake up soon and check that there is not a massive fire to put out. Thankfully I woke up to just a few support emails mentioning the price is not Free (probably a timezone issue) and problems with Family Sharing…

Looking at it now, I have got less than 20 support emails and a few messages on Twitter. For some reason, during the “D-Day,” it seemed like many more.

Thankfully people were supportive and understanding. I tried to reply as soon as possible and even set up auto-reply for the night (my first ever) to let folks know that I am sleeping and will get back as soon as I can.

Scan it - telemetry deck users

(Analytics from Telemetry Deck.)

The edge cases…

My app had low download numbers and worked reliably without issues. That changes when you have thousands and thousands of new users trying it out, unlocking the in-app and similar. I am not happy to admit that I left a couple of embarrassing crashes in the app from the recent Version 3 redesign. Fortunately, they affected (by my estimate) at max a few percent of new users - which was still quite lot.

Some people also couldn’t unlock the in-app at all. What was most strange was that in these cases, the system confirmation sheet showed them success, but my app did not register it at all. For some, this got resolved (I am not sure how), for others, I started generating promo codes for App Store.

I also learned that with Family Sharing, the “Restore purchase” doesn’t work immediately for other family members. It seems to need at least an hour.

Promo codes to the rescue

I finally got to use promo codes! I got burned a bit because there are two types of codes and redemption processes. One is via App Store in the Account section, and the other is a branded sheet that you can link to via URL, and it also opens in App Store.

Due to miscommunication with the first user that resolved unlock issues with code, I thought the correct way was the branded sheet. So I started replying with instructions on how to do it. I started getting back messages saying the code was not working at all.

After feeling quite helpless, I suggested to one person to try the App Store Account route and got back a message that this worked! At this point, I finally had a reliable backup way for people to unlock the in-app. I distributed 11 codes in total.

Thanks Sentry!

I am so happy I decided to integrate Sentry SDK into my iOS projects some months back. Thanks to this error reporting, I was able to quickly discover the crashes and release a hotfix update on the same day. I asked Apple for an expedited review and got it out in under two hours.

Scan it - indie app santa error spike

What wasn’t the wisest decision in hindsight was to log all in-app unlocks to Sentry via a special “info” event. These count towards the generous monthly error quota, and as I saw that I was going to exceed it (at which point Sentry drops all errors for a given month), I promptly started paying for the Team tier to get my errors.

In closing

Overall I am happy that I decided to participate in the Indie App Santa. It was quite an exciting day (albeit stressful) that brought thousands of new users. I have also learned a few things about the in-app purchase process and its problems.

Bluesky logo

Follow on Bluesky to not miss new posts

Filip Němeček profile photo

WRITTEN BY

Filip Němeček Mastodon

iOS blogger and developer with interest in Python/Django.

iOS blogger and developer with interest in Python/Django.