Submitting to the App Store: Step by Step
A complete walkthrough of the iOS App Store and Google Play submission process.
GUIDE BODY
Before You Submit
Submitting your app to the App Store and Google Play is the final step of development and the first step of distribution. The process involves paperwork, guidelines compliance, asset preparation, and review. Plan for it to take 1-3 days of prep work plus 1-7 days for review.
Part 1: Apple App Store
Prerequisites
- Apple Developer Program membership ($99/year): Sign up at developer.apple.com
- A Mac (required for Xcode and signing certificates) or EAS Build (cloud-based, no Mac needed)
- App Store Connect access: Automatically included with your developer membership
Step 1: Prepare Your App for Production
Ensure your app meets Apple's minimum requirements:
- Supports the latest two major iOS versions (iOS 17 and 18 in 2026)
- Works on all supported device sizes (iPhone SE through iPhone 16 Pro Max)
- Does not crash on launch
- All placeholder content is replaced with real content
- All test accounts and debug features are removed
- Privacy manifest is included (required since 2024)
Step 2: Create Your App in App Store Connect
- Log in to appstoreconnect.apple.com
- Click "My Apps" then the "+" button
- Fill in:
- Platform: iOS
- App name: Your display name (up to 30 characters)
- Primary language: English (or your primary language)
- Bundle ID: Select from your registered identifiers (e.g., com.yourcompany.appname)
- SKU: A unique identifier (can be anything, e.g., "my-app-001")
Step 3: Prepare App Store Metadata
App Name and Subtitle
- Name (30 chars): Include your brand and primary keyword
- Subtitle (30 chars): Secondary keyword phrase
Description
- First sentence matters most (it shows in search results)
- Focus on benefits, not features
- Use short paragraphs for readability
- Include a call to action
Keywords (100 characters)
- Comma-separated, no spaces after commas
- Do not repeat words in your title or subtitle
- Use singular forms (Apple handles plurals)
Category
- Choose a primary and secondary category
- Pick the most specific relevant category
Screenshots
Apple requires screenshots for each device size you support. At minimum:
- 6.7-inch display (iPhone 15 Pro Max / 16 Pro Max)
- 6.1-inch display (iPhone 15 Pro / 16 Pro)
- 5.5-inch display (iPhone 8 Plus, for older device support)
Screenshot specifications:
- 6.7-inch: 1290 x 2796 pixels
- 6.1-inch: 1179 x 2556 pixels
- 5.5-inch: 1242 x 2208 pixels
You can upload up to 10 screenshots per device size. Use at least 5.
Screenshot tips:
- Add text overlays highlighting key benefits
- Show the app with real data (not empty screens)
- First two screenshots should convey your app's primary value
- Maintain consistent visual style across all screenshots
App Preview Video (Optional but Recommended)
- 15-30 seconds
- Shows the app in use
- Autoplays (muted) in the App Store
- Maximum file size: 500 MB
App Icon
- 1024 x 1024 pixels, PNG, no transparency, no rounded corners (Apple applies the mask)
Step 4: Privacy and Legal
Privacy Policy (Required)
- Must be hosted on a publicly accessible URL
- Must describe what data you collect and how you use it
- Tools like iubenda or Termly can generate one
App Privacy Details
Apple requires you to declare data collection practices:
- Data types collected (name, email, usage data, etc.)
- Whether data is linked to the user's identity
- Whether data is used for tracking
Be thorough and honest. Apple reviews these declarations and rejects apps with inaccuracies.
Age Rating
Answer Apple's content questionnaire honestly. Most utility and productivity apps qualify for 4+.
Step 5: Build and Upload
Using EAS Build (Recommended)
# Install EAS CLI
npm install -g eas-cli
# Log in to your Expo account
eas login
# Configure your build
eas build:configure
# Build for iOS production
eas build --platform ios --profile production
EAS Build handles code signing automatically. No need to manage certificates and provisioning profiles manually.
Upload to App Store Connect
# Submit the build directly
eas submit --platform ios
Or use Transporter (Mac app) to upload the .ipa file manually.
Step 6: Submit for Review
- In App Store Connect, select your app
- Click the "+" next to "iOS App" to create a new version
- Fill in:
- What's New: Release notes for this version
- Build: Select the uploaded build
- App Review Information: Provide demo credentials if your app requires login
- Click "Submit for Review"
Step 7: The Review Process
- Average review time: 24-48 hours
- Range: 12 hours to 7 days
- Common rejection reasons:
- Crashes or bugs
- Incomplete metadata
- Privacy policy issues
- Misleading descriptions
- Performance issues
- Guideline 4.3 (app spam/duplicate apps)
- Missing purpose string for permissions
If rejected, Apple provides detailed reasons. Fix the issues and resubmit. You can also appeal if you believe the rejection is incorrect.
Part 2: Google Play Store
Prerequisites
- Google Play Developer account ($25 one-time fee): Sign up at play.google.com/console
- A signed AAB (Android App Bundle) file
Step 1: Create Your App in Play Console
- Log in to Play Console
- Click "Create app"
- Fill in:
- App name
- Default language
- App or Game
- Free or Paid
- Accept the declarations
Step 2: Complete the Dashboard Checklist
Google Play requires you to complete several sections before you can submit:
Store Listing
- Short description (80 chars): Keyword-rich summary
- Full description (4,000 chars): Detailed description with keywords naturally included
- Screenshots: Minimum 2, maximum 8. At least phone screenshots required.
- Phone: 16:9 aspect ratio, min 320px, max 3840px on any side
- Feature graphic: 1024 x 500 pixels (displayed at the top of your listing)
- App icon: 512 x 512 pixels, PNG
Content Rating
Complete the IARC questionnaire. Answer honestly about your app's content (violence, language, etc.). Most utility apps receive an "Everyone" rating.
Target Audience
Declare your target age group. If your app is NOT designed for children under 13, say so explicitly. Apps that appear child-directed face additional scrutiny.
Data Safety
Similar to Apple's privacy details:
- What data does your app collect?
- Is data encrypted in transit?
- Can users request data deletion?
- Is data shared with third parties?
Step 3: Build and Upload
# Build for Android production
eas build --platform android --profile production
This produces an AAB file. Upload it to Play Console.
Using EAS Submit
eas submit --platform android
Or upload manually through Play Console: Release > Production > Create new release > Upload AAB.
Step 4: Set Up Pricing and Distribution
- Choose countries where your app will be available
- Set pricing (if paid)
- Configure in-app products and subscriptions in "Monetize" section
Step 5: Release Tracks
Google Play has multiple release tracks:
- Internal testing: Up to 100 testers, no review required
- Closed testing: Invite-only, light review
- Open testing: Public beta, light review
- Production: Full review, available to everyone
Recommended process:
- Start with internal testing to verify the build works
- Move to closed testing with a small group
- Release to production when ready
Step 6: Submit for Review
- Go to Release > Production
- Create a new release
- Upload your AAB or select a previously uploaded build
- Add release notes
- Click "Start rollout to Production"
Google Play Review Process
- Average review time: 1-3 days for new apps, hours for updates
- Common rejection reasons:
- Policy violations (deceptive behavior, inappropriate content)
- Broken functionality
- Missing privacy policy
- Metadata issues (misleading description, keyword stuffing)
- Permission issues (requesting unnecessary permissions)
Post-Submission Checklist
Both Platforms
- [ ] App is tested on physical devices (not just simulators)
- [ ] All placeholder content and test data is removed
- [ ] Privacy policy URL is live and accessible
- [ ] Support URL or email is provided
- [ ] In-app purchases are configured and tested
- [ ] Deep links work correctly
- [ ] Push notifications are configured
- [ ] Analytics are reporting correctly
- [ ] Crash reporting is enabled
Apple-Specific
- [ ] App works on all supported device sizes
- [ ] All permission usage descriptions are clear and honest
- [ ] App Review information includes demo credentials (if needed)
- [ ] Screenshots match current app appearance
- [ ] Privacy nutrition labels are accurate
Google-Specific
- [ ] Data safety form is complete
- [ ] Content rating questionnaire is answered
- [ ] Target audience is declared
- [ ] Feature graphic (1024x500) is uploaded
- [ ] App is tested with internal testing track first
Handling Rejections
Rejections happen. They are not personal. Here is how to handle them:
- Read the rejection notice carefully. Apple and Google specify which guideline you violated.
- Fix the issue. Do not argue with the reviewer unless the rejection is genuinely incorrect.
- Resubmit with a note. Explain what you changed and why it addresses the concern.
- Appeal if necessary. Both platforms have appeal processes for incorrect rejections.
Avoiding Repeat Rejections
- Read the App Store Review Guidelines (Apple) and Developer Program Policies (Google Play) before your first submission
- Test on real devices, not just simulators
- Have someone outside your team test the app
- Ensure all external links work
- Make sure the app provides clear value and is not a minimal shell
Automating the Process
Once you have submitted your first version, automate future releases:
# Build and submit for both platforms
eas build --platform all --profile production
eas submit --platform all
Add version bumping to your release script:
// eas.json
{
"build": {
"production": {
"autoIncrement": true,
"ios": {
"buildNumber": "auto"
},
"android": {
"buildNumber": "auto"
}
}
}
}
This increments build numbers automatically with each submission.
Timeline Summary
| Step | iOS | Android | |------|-----|---------| | Account setup | Same day | Same day | | Metadata preparation | 1-2 days | 1-2 days | | Build and upload | 30-60 min | 30-60 min | | Review | 1-7 days | 1-3 days | | Total | 3-10 days | 2-6 days |
Start your store listing preparation while you are finishing development. By the time your code is ready, your metadata should be too.