multica/docs/mobile/app-store-submission-guide.md
Naiyuan Qing 01c82b296d feat(mobile): 移动端初始化
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 16:39:53 +08:00

6.9 KiB

App Store Submission Guide

Complete guide for publishing the Expo React Native app to Apple App Store and Google Play Store.

1. Prerequisites

Accounts & Fees

Platform Cost Notes
Apple Developer Program $99/year Required for App Store distribution
Google Play Console $25 one-time Developer registration
Expo Account Free (paid plans available) Required for EAS Build/Submit
  • Apple Developer account review: 1-2 days
  • Google Play developer account review: days to weeks

Tools

npm install -g eas-cli
eas login
eas whoami  # verify login

2. Project Configuration

Initialize EAS

eas build:configure

Generates eas.json with three build profiles: development, preview, production.

Key app.json / app.config.ts Fields

{
  "name": "Multica",
  "slug": "multica",
  "version": "1.0.0",
  "ios": {
    "bundleIdentifier": "com.multica.app",
    "buildNumber": "1"          // increment on each submission
  },
  "android": {
    "package": "com.multica.app",
    "versionCode": 1            // increment on each submission
  },
  "icon": "./assets/icon.png",  // 1024x1024 PNG
  "splash": {
    "image": "./assets/splash.png"
  }
}

3. App Signing & Credentials

iOS

  • EAS auto-manages credentials (recommended): Distribution Certificate + Provisioning Profile
  • Or create manually in Apple Developer Portal

Android

  • EAS auto-generates Keystore (recommended), stored securely on EAS servers
  • Back up Keystore — losing it means you cannot update the published app
  • Play Store requires AAB (Android App Bundle) format

4. Production Build

# iOS
eas build --platform ios --profile production

# Android
eas build --platform android --profile production

# Both
eas build --platform all --profile production

Builds run in Expo cloud — no local Xcode or Android Studio needed.

5. Store Listing Preparation

Required for Both Platforms

Privacy Policy

  • Mandatory — must be a publicly accessible URL
  • Must clearly state:
    • What data the app collects and how
    • Whether data is shared with third parties
    • Data retention and deletion policies
    • How users can request data deletion
  • 2025 rule: If data is sent to third-party AI, must disclose explicitly and obtain user consent
  • Tools: Termly, PrivacyPolicies.com, or custom page

App Screenshots

  • iOS: Multiple sizes required (6.7", 6.5", 5.5" iPhone + iPad)
  • Android: 2-8 screenshots
  • Must accurately reflect current app interface

App Icon

  • 1024x1024 high-resolution PNG
  • No alpha/transparency for iOS

App Description

  • Short description (≤80 chars for Google Play)
  • Full description

Support URL

  • A link where users can get help

Account Deletion

  • If the app supports registration, users must be able to delete their account and data in-app
  • Both Apple and Google require this

Apple App Store Connect — Additional Requirements

Item Details
Privacy Nutrition Labels Fill out data collection practices per category in App Store Connect
App Review Information Reviewer contact info, demo/test account credentials
Content Rating Age classification
Export Compliance Encryption usage declaration
Info.plist Permission Strings Clear purpose description for each permission (camera, location, etc.)

Google Play Console — Additional Requirements

Item Details
Data Safety Form Detail data collection and sharing (required even if no data is collected)
Content Rating Questionnaire IARC rating questionnaire
Target Audience Declare if the app targets children
First Upload Must be done manually via Play Console (Google Play API limitation)

6. Submit to Stores

Apple App Store

eas submit --platform ios

This uploads the build to App Store Connect / TestFlight. Then you must:

  1. Log into App Store Connect
  2. Select the uploaded build
  3. Associate it with a version
  4. Fill in all metadata, screenshots, privacy labels
  5. Submit for App Review

Google Play Store

eas submit --platform android

First time: Must upload AAB manually in Play Console.

After initial upload:

  1. Navigate to Production → Create new release
  2. Upload AAB or use the EAS-submitted build
  3. Fill in description, screenshots, data safety form
  4. Submit for review

Auto-Submit (Optional)

eas build --platform all --profile production --auto-submit

7. App Review

Apple Google
Review time Typically 24-48 hours Hours to 7 days
Common rejections Incomplete features, misleading screenshots, missing privacy policy, unclear permission strings Data safety form mismatch, policy violations
After rejection Fix issues, resubmit Fix issues, resubmit

8. Post-Launch

OTA Updates (No Re-Review Needed)

eas update --branch production
  • Only for JS/asset-level changes
  • Native code changes still require a new build + review

CI/CD Automation

Create .eas/workflows/build-and-submit.yml to auto-build and submit on push to main.

Google Service Account Key (for Automated Android Submissions)

  1. Go to EAS dashboard → Credentials → Android
  2. Click Application identifier → Service Credentials
  3. Add Google Service Account Key

9. Checklist

  • Register Apple Developer + Google Play Console accounts
  • Configure app.json and eas.json
  • Prepare app icon, splash screen, screenshots
  • Write and host privacy policy URL
  • Implement in-app account deletion (if registration exists)
  • Add Info.plist permission descriptions (iOS)
  • Run eas build --platform all --profile production
  • Create app in App Store Connect, fill metadata + privacy labels
  • Create app in Google Play Console, fill data safety form, manual first AAB upload
  • eas submit or submit manually for review
  • Wait for review approval → live
  • Set up eas update for OTA updates

References