This aims to be a list of actual AppStore rejection criteria based on our, and hopefully your, direct experience. Please add to this compendium by leaving your own rejection reasons in the comments and we’ll add them to the main list on a daily basis.
1) Vibration. It is not permitted to use continuous vibration in your apps - short bursts as warnings is all that is allowed. Don’t bother trying to set up a timer to keep the vibration going, it will cause your app to be rejected.
2) Linking to private frameworks. This is obvious, but somehow in playing around with stuff we had linked to the MoviePlayer.framework. That’s a no-no, and cost us about ten days while we unlinked that framework, recompiled, and then resubmitted.
3) Improper handling of editing in tableview cells. Also obvious, but be aware that if you enable table cell editing, you’ll have to manually specify which cells should respond to editing controls and which should not. We had some random prefs cells in one of our early apps that were able to be swiped to bring up a ‘delete’ badge. Of course it didn’t do anything, but Apple justly considered this poor design and rejected our app.
4) Icons. Make sure the 57 pixel icon is identical to the 512 pixel version. Also, use a different icon if you are creating ‘lite’ and ‘pro’ versions of your app (i.e., free and paid). Using the same icon for both sends your app straight to … you guessed it … teh bin.
5) Flatulence. Don’t even try. ’nuff said. Now Allowed! Hallelujah!
6) Copying existing functionality. This one is much more subtle and insidious, and has probably affected the great percentage of developers. In addition to the widely publicized Podcaster debacle, reports from user comments indicate that Apple is casting a wide net when looking for duplicated functionality. Mini web browsers, or apps that essentially show web pages, seem particularly vulnerable, even if they add new and/or useful functionality. Stay away from email clients as well.
7) Using appropriate keyboard type. If your app asks for a phone number or other numeral-only input and you present a keyboard that also includes the possibility of entering standard alpha-numeric input … yep. (Thanks Jeremy1026)
Version numbers. If your app is currently at version 0.99 or below, you’d better consider giving it a promotion as Apple seems to prefer 1.0 and above. One of ours was recently rejected for being .016, with a message suggesting that our version number wasn’t even numeric. When we resubmitted the same app from scratch as version 1.0, it went through.
9) Using Apple’s graphics in your own apps. Since Apple did such a tremendous job on the UI for the iPhone, it is awfully tempting to use their graphics and/or style in your own apps. Resist the temptation: we’ve heard of projects being rejected for using the Bonjour logo, as well as Apple’s network icon (the little picture of the globe with all the glowing lines), and others. Even if you use Apple’s button images you may tempt fate if you use them in any way that is at odds with how Apple uses them. For instance, the blue button with the “+” sign can ONLY be used to add a contact to a list – don’t try to use it for anything else.
10) Tableviews again. Victor Wang is REALLY picky about tableviews. If you let a user highlight a row in order to select something or initiate an action, you’d better make darn sure that row is DEselected by the time the tableview is displayed again. Want to keep that row selected as a ‘feature’ (perhaps to remind the user which item they last selected)? Not if you want your app to be approved by Apple, you don’t!
11) Network reachability. If your app uses a network connection, it is YOUR responsibility to tell the user if and when their device loses its network connection. In a recent appstore rejection screenshot, the Apple tester had clearly turned on Airplane mode, then launched the app. When the tester was only informed that the app could not log in, but not that the reason for the login failure was because of the lack of a network connection, the app was rejected.
12) Offensive language from your users. If your app has an interactive component that lets users post text, or if your app pulls user-generated content from the internet, it is YOUR responsibility to censor the language - otherwise Apple will censor your app right out of THEIR store. In a recent report, the Apple tester had written ‘F**K’ into a chat window, and then immediately disqualified the app for obscene language.
12) Use of private APIs. If it isn’t in the iPhone SDK documentation, you can’t use it. This is particularly frustrating for OS X developers moving code over to the iPhone because a lot of functions do work fine and you don’t even suspect that they could be off-limits for the iPhone. Nevertheless, here are some of those calls you might want to make sure are not in your codebase:
currentHost
descriptionWithCalendarFormat:timeZone:locale:
removeFileAtPath:handler:
setNumberOfRows:
terminate
PS: for those who haven’t had the pleasure of interacting with Victor yet:
How Apple Decides whether or not to put an app on the App Store






September 23rd, 2008 at 5:05 am
I believe any use of fart sounds will get you rejected. Both “Pull My Finger” and a “Whoopie Cushion” app were rejected, apparently because of this.
September 23rd, 2008 at 5:35 am
Try and get a app approved for an overlapping service like mail. The app will be rejected.
Furthermore, this is a good initiative. Keep up the good work over there.
September 23rd, 2008 at 6:11 am
[...] updated list and new entries can be found here. Discuss this topic in the [...]
September 23rd, 2008 at 9:13 am
5) Apps can not duplicate functionality of Apple’s pre-installed apps. Ex. I made a simple app that loads the 4 Woot pages into UIWebViews with a UITabBar to make checking each site done in a max of 5 taps. Apple said that the app was simply remapping book mark buttons of Safari therefore duplicating functionality, and therefore, rejected.
September 23rd, 2008 at 8:59 pm
But what about Instapaper? That overlaps Safari in that you can view webpages on it. THe difference is you can view them offline, perhaps, but it’s still difficult to see why this doesn’t overlap while something that focuses on gmail accounts does [forgot the apps' name] I wonder if it would have got accepted if submitted now?
September 23rd, 2008 at 11:16 pm
Having the word “Demo” on one of the screens, as in demonstration of what’s possible (the app was not a limited ‘lite’ version) caused our app to be rejected a few months ago. Removing the word got it accepted eventually.
October 21st, 2008 at 1:45 am
[...] Program, which costs either $99 or $299. And still then, your application can get rejected, for a variety of reasons, including the aforementioned [...]
December 30th, 2008 at 10:49 pm
[...] in fart apps recently, it was only a matter of time… Flatulence was criteria 5 on the Unofficial App Store Rejection Criteria list. With farting given the all-clear, I figured more of those criteria would start to open [...]
February 8th, 2009 at 2:24 pm
[...] interactive has posted a list of Unofficcial App Store Rejection Criteria. Might some some people a little [...]
February 26th, 2009 at 7:41 pm
My Nyuk Nyuk Lite app was rejected because it was referencing features that were in the main version not in the lite version. You are allowed to have a “buy real version” button, but you can’t grey out features in a lite version that when touched say “buy the main version”.
February 27th, 2009 at 5:21 pm
@Kevin Kachikian (first part) — but everyone, please advise me…10base-t, visitors and Apple):
Obviously, from your description, the “Nyuk Nyuk Lite” app duplicates functionality of Apple QuickTime Player. QuickTime Player has all these “PRO Menu Items” grayed out. Click on them and they dangle a carrot about what you are missing and offer you the opportunity to Learn More, express disinterest at the present moment, and of course to Buy Now.
I had just started learning Objective-C after that seductive iPhone App Store keynote; got my Mac talking to me with the Speech framework (NSSpeechSynthesizer I think), then tried to make it into an iPhone app. I guess “Linking to private frameworks” can help me stop trying to get this to work? I was thinking of trying iPhone development again (although my new language love is Eiffel). How can I know that I’m using legal iPhone Classes? I think I came across an iPhone framework in the past, but can’t seem to find it quickly now, and I got the impression that I have to stay within this iPhone framework (or just don’t know how to link NSSpeechSynthesizer into an iPhone app and I don’t know if it would fail under “Linking to private frameworks” anyway.) Is making an iPhone app with NSSpeechSynthesizer possible or disallowed? - Please also tell me here InstructICC at hot mail, thanks.
March 4th, 2009 at 2:33 pm
I just had an app rejected for inaccurate/unclear description…
“The application description for the application states that the user can “choose the length of conversation”, however, using the slider on the main view has no affect on the call (see screenshot).”
more info on the blog here:
http://www.beardedpony.com/beardedpony/Blog.html
April 13th, 2009 at 12:36 pm
[...] found this post to be very informative, and possibly helped to prevent my App from being rejected the first round [...]
July 12th, 2009 at 3:25 pm
vrotmnenogi
July 16th, 2009 at 8:04 am
[...] Unofficial App Store Rejection Criteria | 10base-t interactive (tags: iphone rejection) [...]
August 3rd, 2009 at 4:03 am
We can’t access the photo which are take by camera .
September 17th, 2009 at 12:20 am
I had my last submission (see my website if you want to know what it was) blocked due to “ridiculing public figures”. I let it drop because the client hired their own in-house developer, good luck to him! Apparently content that is OK for an iTunes podcast is not necessarily ok for the app store?
December 15th, 2009 at 6:10 pm
[...] Unofficial App Store rejection criteria [...]
January 29th, 2010 at 5:35 am
[...] of Web 2.0 can nowhere be witnessed as completely as in Apple’s App Store. Well, of course there is criteria to become part of this exclusive digital warehouse – clear, transparent criteria to give no [...]