davey

Launching Spendly on the App Store

Recently, I launched my first app Spendly, a smart expense tracker, on the Apple App Store, a goal I have had for a long time now. This blog post is dedicated to sharing my learnings while going through the app store review process. For more info about Spendly, check out the projects tab, there you'll see the tech stack and more info about it.

As someone who uses React Native and Expo to build apps, preparing and signing the app was not necessarily a herculean task due to the awesome developer experience of Expo Application Services. Using that, submitting the app to TestFlight (Apple) was a breeze. I could start a build process (in the cloud), shut down my laptop, and then get a notification of my app being processed by Apple and ready to test (at the time of beta testing) once EAS was done doing its stuff. This is my first recommendation to anyone building React Native apps, use Expo Application Services! It'll save you a lot of trouble, and they have a pretty generous free-tier which I used extensively. Additionally, as someone on a Windows laptop, at the time of writing, EAS was basically the most stress-free way for me to build an iOS app without owning a MacBook.

Now, onwards to App Store tips:

Firstly, whenever you're submitting your app for review, make sure to include working login details that provide access to your app's full functionality for testing. When I submitted my app, although I included the logins, I forgot to create the demo account which led to my first rejection from Apple (yes, the process is not always smooth, and be prepared for a rejection your first time of submitting the app, it's actually fine, sometimes we miss some stuff). So do not make the same mistake I did.

Secondly, make use of the notes section in the App Store Connect dashboard to talk about anything you feel the reviewer should know before reviewing your app. Personally, I didn't use it when I first submitted, but after getting a rejection due to the reviewer not understanding the flow of my app, I used the section to explain why I made some design decisions, which the reviewer then read and understood.

Thirdly, whenever asking for permission to use hardware resources on iOS, e.g., the microphone, always be specific in your permission request alert to the user on why you need that resource. My app got rejected because of this issue. When I used expo-audio, a library for accessing the microphone and recording sound, I didn't leverage the config plugin necessary to give a proper reason for accessing that resource. After the rejection, I was sure not to repeat the mistake, lol. So yeah, that's an important thing.

Lastly, I suggest anyone building an app targeting iOS reads their design guidelines (very important!), so the person doesn't face a rejection due to something he/she missed.

That's all for today, thanks for reading till the end! Next, you can check out Spendly on the App Store, or follow me on X at 1804davey for React (Native), iOS, software dev stuff. Also, I'll be posting more technical blogs in the future so do visit from time to time!