On My First Software Release
I wrote some of this in a recent social media post, so if you follow me in lots of places, the first part may sound familiar.
The Good
Yesterday, I officially released my life counter app for Magic: the Gathering called One Is Not None. Within minutes of it going live, someone downloaded it and paid to upgrade to Premium. It's a surreal feeling; I am profoundly humbled that someone would be willing to pay for software that I wrote.
I've been a software developer professionally for some time, but this is different. I'm proud of what I build at my day job, but in the same way that a proofreader might be proud of the work they did on the eighth chapter of a book. It's cool to be part of it, but that's all it ever is.
With One Is Not None, I am the developer, the designer, the marketer, and the product manager (to list a few of the roles). From the bottom to the top, this app is me. It's my aesthetic. It's my features. It's my bugs. You can bet that I got a lot of help and support, but at the end of the day, the only person who really pushed this app across the finish line was me.
And then someone went and paid me for that work. Granted, after Apple and Uncle Sam take their cuts, I'm walking away with about two bucks per sale, but I am prouder to have earned these two bucks than any other sum I've ever earned. Someone decided that what I built was functional enough or beautiful enough or cool enough to warrant their hard-earned money, and I don't think it's possible for me to overstate how thankful I am for that.
To anyone who checks out the app, and even more so to anyone who purchases Premium, thank you. This is the first step in a long journey and you're all making it possible for me to continue moving forward.
The Bad
Alas, if that were the entire story of my first app release then things would be wonderful. However I faced some challenges on day one, some of my own making, some not. As soon as the app went live, I got a report that someone couldn't increment or decrement any life counter by single points. Tapping and holding worked, but not normal taps. I thought it might have been a fluke until I got my second report. I dug around and discovered that Apple changed how some gesture APIs worked in iOS 18.4 which fundamentally broke my app.
How did this happen? It turns out that the day I submitted One Is Not None to Apple was the same day iOS 18.4 was released. So when I tested everything before submitting the build, everything was working fine because I didn't have 18.4 on my device yet. However, realistically, this is my fault, because I've had access to the iOS 18.4 beta for a while and I could have been testing on that version. This is definitely a lesson I'll be carrying with me moving forward.
Regardless, a bad version of my app was out in the wild on day one, so I scrambled to come up with a fix. The fix was actually relatively easy to implement so I was ready to go. However…
The Ugly
… I was locked out of my Apple Developer Account and therefore could not access App Store Connect to submit my bug fix. Sometime in the previous week, I tried signing in to my account and the sign-in page told me to recheck my credentials. Given my credentials are (and have always been) in 1Password, I thought it unlikely that was the issue.
After some noodling around, I finally got an error saying that my account was locked, and that I could request for someone to review my account and unlock it.
"Great," I thought, "let's get this sorted. It must have been some kind of fluke because this is my first app on the App Store."
After about a day, Apple denied my request. Their reasoning? They didn't give one. Their timing? Right after Apple Developer Support was closed for the week, with my app launching first thing on Monday. I called consumer Apple Support immediately, and I also called Apple Developer Support first thing Monday morning, and both told me that they couldn't even see why my account had been locked.
Back to the Good
After chatting with Apple Developer Support, who escalated my case, and talking to a friend who has connections at Apple, some unnamed hero somewhere unlocked my account. I raced to push my bug fix and, as of this morning, that bug fix is live. I still haven't received any communication from Apple as to what happened, and I likely never will. But my fix is live for my customers and that's what matters.
Back to the Ugly
I have been hearing from the community that I'm not the only one to experience this. Recently, lots of people have been inexplicably locked out of their developer accounts. Apple doesn't ever seem to give a reason, and I'm not sure how many of these recent cases have had their accounts unlocked. However, it's a bit horrifying to know that access to my livelihood could be revoked so quickly and easily that it appears to be able to happen accidentally.
In this instance, I'm fortunate that all I have on the App Store is a dinky little app (which I'm super proud of, but nevertheless dinky in the grand scheme of things). I don't have the majority of my income coming from the App Store nor is my app responsible for life-or-death scenarios. Those people and those apps do exist, though, and the fact that we are insignificant enough to Apple that they can disrupt our businesses and our lives and not give us so much as a "my bad" should give us all pause.
Closing Thoughts
Despite these challenges, I'm not discouraged. The joy I've found from bringing something cool into the world and sharing it with others is unparalleled by any other work I've ever done. It far outweighs whatever uncertainties Apple introduced into the process.
That said, I think it would be wise for all of us to reconsider the relationship we have with Apple (if we haven't already). Long are the days where Apple views its relationship with third-party developers as symbiotic. We are but granted the privilege of building apps for their platform. That being the case, I'm going to continue building apps because it's what I enjoy doing, but I will always keep in mind my answer to the question:
"What will I do if all of this disappears tomorrow?"