TL;DR I have written an app, Appstat, that I think every Apple app developer will want. It is a macOS status menu app that displays all your apps that are for sale on the App Store plus a whole bunch of data about them including proceeds, sales, ratings, and uploaded builds.
It is an app that I have always dreamed of, so I built it, and I know you will love it! You can buy Appstat on gumroad now!
If you are an Apple app developer I’m sure you’ve come up with your own system to track sales. When I started out, I used a Mac app to show my sales reports - it had graphs and was wonderful. But then that app got expensive and less useful and I stopped using it.
So for years I’ve been logging into App Store Connect and clicking around furiously to find the information I needed. It’s a lot of clicking, and I found myself checking reports less and less often - certainly not casually.
But this isn’t good in fact it is terrible! I’m an independent app developer and need to stay on top of things. I want to make sure my apps are performing well and that customers are happy with them. My livelihood depends on it.
Enter James Montemagno. After recording an episode of Merge Conflict, we were chatting about what our ideal sales and builds status app would be. We both fell in love with the idea of a little menu that, when clicked, would show you all the important information about all your apps, at a glance. No more web pages with passwords, no more progress bars, just glorious data.
I decided that this app needed to exist - I, at least, needed it to exist. So I wrote it. And now I’m making it for sale to you, I hope you love it. :-)
What does the app show you? EVERYTHING. It shows you everything:
- Name and platform
- Average proceeds per day (including in-app purchases)
- Average unit sales per day (including free apps)
- Bundle identifier and SKU
- Your app’s website
- Original release date and time on the store
- Latest version number and time on the store
- Rate at which people rate your app (ratings/month)
- Latest version rating
- Overall app rating
- Device distribution based on purchases
- Country distribution based on purchases
- Chart of proceeds over time
- Average proceeds per day
- Projected proceeds per month and year
- Chart of unit sales over time
- Latest builds uploaded to TestFlight
All stats are linked to the appropriate section of Apple’s developer site, making Appstat a great launchpad.
Total store proceeds are also displayed:
- Average total proceeds per day (and standard deviation)
- Projected total proceeds per month (estimated using a configurable amount of history)
- Projected total proceeds per year
I can’t expect you to use an app like this unless I take security very seriously, and I did.
#1 No usernames or passwords
This isn’t the 90s. Instead, all requests are signed using a personally generated API Key. This gives you absolute control without ever exposing your usernames or passwords. This also relieves me of having to ask for that sensitive information.
#2 No data is ever transmitted from your local machine
This is obvious, but in 2020 I guess I need to state it. I don’t even collect analytics.
#3 No data is ever cached to disk
Disk caches are security holes so I don’t use them. Instead, the app downloads all data afresh when started. Don’t worry, this process is very fast.
#4 All account setting are encrypted in Keychain
You need to provide an API Key to access data and that key is encrypted locally on your machine in your login Keychain.
Selling on Gumroad
I also unlocked a Mac developer achievement with this app by integrating the Sparkle framework to do app updates. I feel like this is a real milestone in my career.
When you write a security-conscious app with multiple data sources and sums over currencies, you want to use a language with strongly typed data and immutability - a functional programming language - you want to use F#. And so I did. The data architecture is the reactive one I’ve been presenting at conferences over the last 5 years.
Appstat was written using Xamarin.Mac to keep it good looking and fast and was written using Visual Studio for Mac. Big thanks to everyone on the Xamarin team for making it possible to use my favorite language on macOS!