Engineering

How to Avoid App Store Rejections

Preparing an app for app review

App Store rejections
Josh Holtz
Josh HoltzFebruary 8, 2022

At RevenueCat, we have a Slack channel called “Employee App Club”. It’s filled with RevenueCat employees who have launched their own apps or are planning to. A lot of us even use RevenueCat in our own apps and test out the latest releases!

Recently, we started talking about App Store rejections. It’s something we’ve all encountered before. Preparing an app for review and handling rejection is one of the hardest parts of being an app developer. Not many feelings compare to receiving an App Store rejection after months or years of hard work.

While I wish I could never have my apps rejected by app reviewers, I know that’s not realistic. But by talking about preparing for App Review, I can reduce some of the uncertainty about the process and hopefully lessen the severity of receiving a rejection.

The App Store Review Guidelines

Apple has released a document called App Store Review Guidelines. It’s pretty long and dry, but it’s a good idea to read through it so you know what Apple could reject you for. The guidelines are broken down into five sections:

  1. Safety
  2. Performance
  3. Business
  4. Design
  5. Legal

Apple will point to specific sections of these guidelines in a rejection, so you’ll want to be familiar with them if you need to fix or dispute an issue.

The guidelines mention a few important things to do before you submit your app for review: 

  • Test your app for crashes and bugs
  • Ensure that all app information and metadata is complete and accurate
  • Update your contact information in case App Review needs to reach you
  • Provide an active demo account and login information, plus any other hardware or resources that might be needed to review your app (e.g., login credentials or a sample QR code)
  • Enable backend services so that they’re live and accessible during review
  • Include detailed explanations of non-obvious features and in-app purchases in the App Review notes, including supporting documentation where appropriate

These steps might seem obvious, but they’re really important for lowering your chances of receiving a rejection. So let’s break them down.

Test your app for crashes and bugs

This is one of the least subjective rejections, but one of the hardest to solve, since you need to debug a release build. Make sure to test your app with TestFlight on as many devices and OS versions as possible to prevent one of these rejections. Builds installed from TestFlight give your app the most App Store-like experience. If it doesn’t crash on TestFlight, it most likely won’t crash for your reviewer. And make sure to submit your in-app purchases for review with your app submission!

Ensure that all app information and metadata is complete and accurate

Most of my rejections have come from this one — probably because this was always the last step in my development process. Filling out forms isn’t fun, and I got sloppy with my metadata because I was eager to release my app. If I had taken a little more time and been more careful, I would have had fewer rejections and been on the App Store sooner.

Ensure your title, subtitle, description, tags, and “what’s new” are all filled out and accurate and that none violate any of Apple’s guidelines. Fastlane offers a tool called precheck that can help you identify any potential violations. It checks your metadata and in-app purchases and will warn you if it finds any swear words, placeholder words, unreachable URLs, or mentions of other platforms or Apple product bugs. 

Pro tip: Fill out your metadata as early as possible in your app creation process, and keep updating it as your app evolves. This will make the final steps easier when you’re ready to submit for review. Check out this post for tips on optimizing your App Store listing.

Update your contact information in case App Review needs to reach you

If you’re lucky and get a standard rejection, you’ll get an email (sent to your Apple ID) and an App Store Connect notification about why your app was rejected. But if you’re unlucky, you might get a phone call about what went wrong with your review. You’ll want to have your current contact info in here so you can talk to the App Store review team if they try to call you.

Provide an active demo account and login information, plus any other hardware or resources that might be needed to review your app (e.g., login credentials or a sample QR code)

This one is important! If your app requires users to log in, make sure you set up an account that has good data for the App Store review team to test with. If I was reviewing apps all day,  the last thing I would want to do is constantly create new accounts and populate them with data to fully test each app. You can do this for your app reviewer by creating a helpful test account. Anything you can do to make their job easier will set you up for a quicker review time and a higher chance of approval.

Include detailed explanations of non-obvious features and in-app purchases in the App Review notes, including supporting documentation where appropriate

Including extra information has been the biggest factor in getting my recent apps approved. I learned this in 2020 with the release of my first real indie app, ConnectKit. ConnectKit is an app for using the App Store Connect API through iOS Shortcuts. I couldn’t give the App Review team a username and password for this app, since the App Store Connect API uses public/private key authentication. So I created an API key specifically for the app reviewers and put it in a ZIP file that I attached to my app submission. But that wasn’t enough — I kept getting rejected.

The app reviewer didn’t know where to find the key or how to use it in the app (even though the app has instructions and an onboarding process). But I didn’t blame the reviewer (it’s an odd concept if you aren’t familiar with it). When I resubmitted, I included two demo videos in my ZIP file along with the API key. The first video showed how to make and download the key. The second video showed how to use it in the app. Now I always upload this ZIP file with every update (even the small ones) so any new reviewer has all the information and examples they could possibly want.

Pro tip: Give your app reviewer plenty of information. It can only help you.

Forever stuck in “Waiting for review” or “In review”

Seeing your app in the rejected state can be frustrating, but there are usually steps you can take to get your app back in review. One of my least favorite feelings is being stuck in “Waiting for review” or “In review”. There’s no indication of where you are in line, and there isn’t anything you can do to speed up the process. I just try to forget about it and work on other things. 

But what if you’ve been stuck waiting for a ridiculous amount of time? I got you!

ConnectKit was “In review” for a total of 35 days. I checked my email almost every hour during that time. Sometimes, I would even anxiously wake up in the middle of the night to check my email. Those were dark days.

The first thing I did after it was “In review” for multiple days was cancel my request and submit again. I’ve done this for “Waiting for review” in the past, and it seems like it moved things along. I’ve heard the same from other developers as well. We think canceling and resubmitting puts your app into a different review queue that may get your app reviewed faster (but that’s speculation). So this is something you can try, but beware! There’s a chance the App Store could notice you doing this and maybe flag your account (also speculation). This really isn’t the right way to get your app reviewed faster.

The correct thing to do is to contact Apple if you’re really concerned. There’s a Contact Us – Status form where you can request the status of your app review. I used this a few times with ConnectKit, and I got responses from real people. This didn’t speed up the process, but it did reassure me that my app review request wasn’t lost.

Try not to stress too much about being stuck in these phases. Use this time to work on other areas of your business or just take some time to relax.

Soothing the fear of rejection

Even after you’ve read the guidelines and are confident in your metadata and review submission, the fear of App Store rejection never goes away. I have a few other techniques for when I’m still not feeling confident that my app will be approved. 

Look at competitors or similar apps

It’s usually a good sign if your app is similar or even a competitor to other apps on the App Store. That means apps like yours have passed inspection and been approved by the App Store review team. But you’ll want to make sure that you differentiate your app from the competition in some way, as the App Store does not like clones. 

However, just because Apple has approved an app like yours does not necessarily mean that yours will get approved. The App Store rules are constantly changing, and sometimes Apple will stop approving certain types of apps. 

Test a stealth release

If you aren’t sure if an app you’re developing will get approved, you can try stealth releasing a minimal version of the app first to test the waters. That way, you can get early feedback from the App Store review team before you invest time and energy into building your app. Ideally, Apple would offer an early review service like this, but I don’t think they do (at least not publicly). I stealth release all of my apps to remove that fear of rejection. This early version might get a few reviews from users that stumble across it, but you can always reset the ratings and reviews through App Store Connect.

Conclusion 

So how can you avoid App Store rejections? The short answer is: I don’t think it’s possible. 😛 Rejections are an inevitable part of being an app developer. But by following these tips, you can increase your chances of having your apps approved — and feel better about receiving the occasional rejection. Test your app on all platforms, be thoughtful about the metadata you present to the App Store reviewers and future users, and attach clear, helpful instructions and demos to your App Store submissions. See you on the App Store!

Subscribe to our monthly newsletter

Related posts

Google Play class action developer lawsuit
Engineering

Google Play Billing Library 5.0, an overview

Everything you need to know about Google Play Billing Library 5

Rik Haandrikman

Rik Haandrikman

November 25, 2022

Engineering

How RevenueCat’s SDK team uses Release Trains

How we automate the releases of our SDKs

Cesar de la Vega

Cesar de la Vega

October 31, 2022

Stripe for In-App Purchases
Engineering

Can You Use Stripe for In-App Purchases?

Learn about when you can use Stripe and opportunities to save money on fees.

Corey Rabazinski

Corey Rabazinski

October 31, 2022

Want to see how RevenueCat can help?

RevenueCat enables us to have one single source of truth for subscriptions and revenue data.

Olivier Lemarie, PhotoRoomOlivier Lemarie, PhotoRoom
Read case study