When your App Store review goes off the rails
How to Handle App Store Review Challenges
Getting your app through App Store review can feel like navigating a maze blindfolded. After submitting dozens of apps over the years, I’ve learned that preparation is everything. In this guide, I’ll share practical strategies for preparing your app, common issues that trip up developers, and what to do when reviews go sideways.
Preparing Your App for Review
Before you even think about hitting that submit button, make sure you’ve covered these essential areas.
1. Complete Your App Store Connect Metadata
Apple reviewers look at everything, not just your code. Ensure you have:
- App Name & Subtitle: Clear, descriptive, and free of keyword stuffing
- Description: Accurate representation of what your app does
- Screenshots: Show actual app functionality (no misleading images)
- App Preview Videos: If included, must show real app usage
- Privacy Policy URL: Required for all apps - must be accessible and accurate
- Support URL: A working link where users can get help
- Keywords: Relevant terms without competitor names or trademarked terms
2. Configure Privacy & Permissions Correctly
This is where many apps get rejected on the first submission:
// Info.plist - Always include clear, specific usage descriptions
NSCameraUsageDescription = "Take photos for your profile picture"
NSPhotoLibraryUsageDescription = "Select photos to share in posts"
NSLocationWhenInUseUsageDescription = "Find nearby events and users"
NSMicrophoneUsageDescription = "Record voice messages"
Key Rules:
- Only request permissions you actually use
- Provide specific, honest explanations for each permission
- Request permissions at the moment of use, not at app launch
- If you request a permission but don’t use it, you’ll be rejected
3. Implement Sign in with Apple (When Required)
If your app offers third-party sign-in options (Google, Facebook, etc.), you must also offer Sign in with Apple:
// React Native example with expo-apple-authentication
import * as AppleAuthentication from 'expo-apple-authentication';
const handleAppleSignIn = async () => {
try {
const credential = await AppleAuthentication.signInAsync({
requestedScopes: [
AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
AppleAuthentication.AppleAuthenticationScope.EMAIL,
],
});
// Handle successful authentication
} catch (e) {
// Handle error
}
};
4. Handle Account Deletion
Since 2022, if your app allows account creation, you must provide a way to delete accounts:
- Must be easily discoverable in the app
- Must delete all user data (or explain what’s retained and why)
- Can include a confirmation step, but can’t make it unnecessarily difficult
- If deletion takes time, clearly communicate the timeline
5. Test on Real Devices
Simulators won’t catch everything. Test on:
- Multiple iPhone sizes (including SE and Pro Max)
- iPad if your app supports it
- Older iOS versions you claim to support
- Different network conditions (slow, offline)
Common Rejection Reasons (And How to Avoid Them)
Guideline 2.1 - App Completeness
What it means: Your app crashes, has bugs, or feels incomplete.
Common triggers:
- Placeholder content (“Lorem ipsum”, test data)
- Broken links or features
- Missing functionality promised in the description
- Crashes during normal use
How to avoid:
- Remove all test/placeholder content
- Test every user flow end-to-end
- Have someone unfamiliar with the app test it
- Check your crash analytics before submission
Guideline 2.3 - Accurate Metadata
What it means: Your app doesn’t match what you described.
Common triggers:
- Screenshots showing features that don’t exist
- Description promising functionality not present
- App preview showing different UI than the actual app
- Using “beta” or “test” in the app name
How to avoid:
- Update screenshots with every significant UI change
- Keep your description current
- Never mention features “coming soon”
Guideline 3.1.1 - In-App Purchase Requirements
What it means: You’re trying to circumvent Apple’s payment system.
Common triggers:
- Linking to external payment pages
- Mentioning that features are “cheaper on our website”
- Selling digital goods outside IAP
- Physical goods/services are fine (Uber, Amazon, etc.)
How to avoid:
- Use IAP for all digital content and subscriptions
- Don’t mention alternative payment methods
- If you have a web version, don’t link to it for payments
Guideline 4.2 - Minimum Functionality
What it means: Your app is too simple or is just a website wrapper.
Common triggers:
- WebView-only apps with no native functionality
- Single-feature apps that should be a website
- Apps that duplicate built-in iOS functionality without adding value
How to avoid:
- Add native features (push notifications, offline support, widgets)
- Provide functionality beyond what a mobile website could offer
- Make sure your app has enough depth to justify installation
Guideline 4.3 - Spam / Copycat Apps
What it means: Your app is too similar to existing apps or your own other apps.
Common triggers:
- Publishing multiple apps with minor variations
- Copying another app’s UI/functionality too closely
- App farm submissions
How to avoid:
- Make each app distinctly different
- Create original designs and experiences
- Consolidate similar apps into one with more features
Guideline 5.1.1 - Data Collection and Storage
What it means: Privacy and data handling concerns.
Common triggers:
- Collecting data you don’t need
- Not disclosing data collection in privacy policy
- Sharing data with third parties without disclosure
- Not encrypting sensitive data
How to avoid:
- Only collect data you genuinely need
- Keep your privacy policy updated and accurate
- Use HTTPS for all network requests
- Implement proper data encryption
Guideline 5.1.2 - Data Use and Sharing
What it means: Your App Privacy “nutrition label” doesn’t match reality.
Common triggers:
- Incorrect App Privacy responses in App Store Connect
- Third-party SDKs collecting data you didn’t disclose
- Analytics tools tracking more than disclosed
How to avoid:
- Audit all third-party SDKs for data collection
- Be thorough when completing App Privacy questions
- When in doubt, disclose more rather than less
When Reviews Go Off the Rails
Sometimes, despite your best efforts, you end up in review limbo. Here’s how to handle it.
The Endless Back-and-Forth
You’ve addressed every issue, but the reviewer keeps finding new problems or asking for clarifications that don’t make sense. This happens more often than you’d think.
Strategy 1: Request a Different Reviewer
In your App Review response, you can politely ask:
“We believe we have addressed all the concerns raised. If possible, we would appreciate having a different team member review our submission to provide a fresh perspective on the changes we’ve made.”
Strategy 2: Use the App Review Board
If you genuinely believe your rejection is incorrect, appeal through the App Review Board:
- Go to App Store Connect
- Navigate to your app’s resolution center
- Click “Appeal” on the rejection
- Provide a clear, professional explanation
The Nuclear Option: Call Apple
This is the tip that saved my sanity: you can actually call Apple’s App Review team.
Here’s how:
- Go to developer.apple.com/contact
- Select “App Review”
- Choose “Request a phone call”
- Select an available time slot
When to use this:
- Reviews have been going on for weeks with no resolution
- You’re getting contradictory feedback
- The reviewer seems to misunderstand your app’s purpose
- You need clarification on vague rejection reasons
Tips for the call:
- Be polite and professional (they’re people too)
- Have your app ID and rejection details ready
- Explain your app’s functionality clearly
- Ask specific questions about what you need to change
- Take notes during the call
I’ve used this several times when stuck in review loops. In every case, the phone call resolved issues that weeks of written responses couldn’t.
Pre-Submission Checklist
Use this checklist before every submission:
App Functionality
- All features work as described
- No placeholder content or test data
- No crashes in normal usage
- Works offline (or gracefully handles no connection)
- Universal links work correctly
- Deep links function properly
- Push notifications work (if applicable)
Privacy & Permissions
- Only requesting permissions you use
- All permission descriptions are specific and accurate
- Privacy policy is current and accessible
- App Privacy nutrition label is accurate
- Account deletion is implemented (if accounts exist)
- Sign in with Apple included (if other social logins exist)
Metadata
- Screenshots reflect current UI
- Description accurately describes functionality
- No trademarked terms in keywords
- Support URL works
- Age rating is appropriate
- Content rights are properly documented
Technical
- Tested on multiple device sizes
- Tested on minimum supported iOS version
- No private API usage
- Build is signed correctly
- No expired provisioning profiles
In-App Purchases (if applicable)
- All IAPs work in sandbox
- Restore purchases works
- Subscription management is accessible
- Pricing is clear before purchase
Final Thoughts
App Store review can be frustrating, but understanding the process helps immensely. Remember:
- Most rejections are fixable - Don’t panic when you get rejected
- Be thorough - Better to delay submission than get rejected
- Communicate clearly - In responses, be specific about changes made
- Know your options - Appeals and phone calls exist for a reason
- Learn from rejections - Each one teaches you something
The review team’s job is to protect users, not to make your life difficult. Approach the process as a partnership, and you’ll have a much better experience.
Have you had particularly challenging App Store review experiences? I’d love to hear your stories and tips in the comments or on Twitter/X.
Last updated: January 2026 - Apple’s guidelines change frequently, so always check the latest App Store Review Guidelines for current requirements.