Skip to content
Skip to content
Goodspeed

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

  1. Log in to appstoreconnect.apple.com
  2. Click "My Apps" then the "+" button
  3. 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

  1. In App Store Connect, select your app
  2. Click the "+" next to "iOS App" to create a new version
  3. 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
  4. 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

  1. Log in to Play Console
  2. Click "Create app"
  3. Fill in:
    • App name
    • Default language
    • App or Game
    • Free or Paid
  4. 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:

  1. Start with internal testing to verify the build works
  2. Move to closed testing with a small group
  3. Release to production when ready

Step 6: Submit for Review

  1. Go to Release > Production
  2. Create a new release
  3. Upload your AAB or select a previously uploaded build
  4. Add release notes
  5. 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:

  1. Read the rejection notice carefully. Apple and Google specify which guideline you violated.
  2. Fix the issue. Do not argue with the reviewer unless the rejection is genuinely incorrect.
  3. Resubmit with a note. Explain what you changed and why it addresses the concern.
  4. 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.

Ready to start building?