About ten years ago, I saw an article in a German newspaper about a teenager who built his own app (it was some sort of football game) and published it on the App Store. I don't really know why, but for me, this sparked some sort of lifelong interest in how the App Store works and how you can make your own app and get it published there.
In spring of last year, I believe the improving weather in Germany sparked something in me, and I set myself a goal to learn how to make my own app and get it published on the App Store. I wanted to get it done in about one month – kinda like a solo hackathon.
Fortunately, I already had an idea for an app: I wanted to build an S3 adapter for Apple's "Shortcuts" app. The idea was to add S3 actions to Shortcuts, so you could upload/download files and more. Pretty niche – I know!
Motivated, I got to work and started learning the basic syntax of Swift & SwiftUI. I must say I am not a fan of Apple's way of documenting their languages and the built-in classes and methods – it doesn't seem to be meant to be understood well on an ad-hoc basis. So, admittedly, some AI tools helped me create the base structure of the not-so-beginner-friendly App Intents required for my app to interact with Apple Shortcuts. After about a month of occasional tinkering on the app, "Upper" was born!
But building Upper wasn't what got it into the App Store. If you're familiar with Apple, they love to be exclusive. So having an Apple account is not all that's required. You need an..
✨ Apple Developer Account ✨
Besides the perk of paying about a hundred dollars every year, you'll get the privilege to share your app on the Apple App Store. For me as a student, this was a pretty big investment. I didn't start building apps to get rich, neither do I have a million-dollar idea. So, my only goal was to get my app published, charge a fair price for it, and try to at least get my investment back (more on how that turned out later).
In Germany we'd say: "Das war noch nicht das Ende der Fahnenstange" (That wasn't the end of the flagpole yet).
First, I wanted to publish my app under a cool name, so I got heavily inspired by a coastal haven on the east coast of Australia: "Currumbin". So – Currumbin Studio was born.
Then you also can't forget the EU Digital Markets Act (DMA) – because why would you? If you're an European seller, you're required to publish a lot of contact information on the public app page, like full name, address, phone, and email address. Luckily, you can use a P.O. box and secondary numbers, but all of that is associated with additional costs if you don't want everyone having your (very) personal contact information.
After all of that, I was finally ready to get my app listed on the App Store. I had the brilliant idea to make my app available in both German and English, as well as on iPhone and iPad. So I had to make all app store image assets four times and translate all app and app store strings in both languages (not annoying at all). Building the app is definitely one thing, but marketing is a totally different story. It can be fun, but also tiring.
After building a minimalist site for Currumbin Studio, a site for my app, and an App Store page, as well as user documentation, I had everything together for the launch.
Before your app goes live on the App Store, it goes through a rigorous review process with Apple. They have a lot of developer guidelines and requirements. For example, I had to learn (by getting my app rejected) that Apple requires a specific percentage of images on the App Store to explicitly have screens from my app. That's generally a good practice, but in my app's case, the main functionality is in Apple's Shortcuts app. They also had a lot of questions about my app and how third-party functionality (S3 services) play into my business model (they don't). After making some adjustments, I submitted the final release candidate of Upper.
It's here!! — #UpperApp is finally available in the App Store! With Upper, you can manage your S3-compatible object storage right from the Apple Shortcuts app (which means: endless possibilities!! ✨) Available Until May 31st at an Introductory Price 👀 (50% off) apple.co/4k8reAZ
Then, finally, on May 8th, I was able to release Upper (this is, probably, how it feels to chew 5 Gum). It was an incredible feeling to see my app with my name under it on the App Store. A little dream come true!
Now the only thing left to do was to make some updates to the app in the following months to add all of the features I had originally planned, and watch the sales and reviews roll in.
After a year, you might be wondering: how did my niche app perform? It’s funny, I didn’t find many answers to that question either when I was trying to guess how my app would do before I released it. There’s not a lot of public information out there about how these kinds of apps usually perform.
What I can say: I did not get my investment back. I wasn't that far from my goal, but it seems like (as I expected) my kind of niche app isn't very profitable. And to be honest, the start of the second year since publishing doesn't look much better either. But – I'm not mad or disappointed! Because that wasn't the goal from the start anyways.
I wanted to learn how to build, publish, and distribute an app in the Apple ecosystem – and that's exactly what I've accomplished! Since then, I've also released a second app (rdaptastic). But I'm also honest when I say that I've only scratched the surface of app development and distribution. I've yet to figure out subscriptions and advanced system-level Swift functions.
You might be wondering where those spicy opinions are. Good news, you've just found them!
- 1.
I don't know if it's just me, but Apple has to improve their developer docs. I've rarely seen so formal and deeply technical docs that are so beginner-unfriendly.
- 2.
App Store Connect (the tool used to manage your app's App Store & TestFlight presence) is so-so. It can be annoying to deal with due to its buggy interface, but generally it works well enough to get your app out there.
- 3.
While we're talking about App Store Connect: the statistics for your apps are always delayed by a minimum of a few hours, but you'll get the best overview after a minimum of one day, so you need to be a bit patient to see how your launch day went.
- 4.
I love the EU, but bureaucracy is annoying – especially for small publishers like myself. I just don't get the push for privacy and data ownership and then, on the other hand, requiring small developers to basically publish their home address to everyone on the internet if they're not willing to pay up for a P.O. box.
Finally, the message I want you to take away from this post is just to chase your dreams and believe in yourself. It sounds super cheesy – I know! But if you don't trust yourself enough to try something new or learn how to do it, you won't do it. I'm a practical learner, and following through with the whole process of making my own app and getting it out there was just a great way of learning how this whole ecosystem works.