| name | mobile-app-store-prep |
|---|---|
| description | Prepare a mobile app for App Store and Play Store submission. Covers app icons, screenshots, metadata, privacy policy, age ratings, and review guideline compliance. Use when the user is getting ready to publish their app. |
| standards-version | 1.7.0 |
Use this skill when the user:
- Wants to publish their app to the App Store or Play Store
- Asks about app store requirements, screenshots, or metadata
- Needs help with app icons, descriptions, or keywords
- Mentions "publish", "submit", "app store", "play store", "release", or "store listing"
- Target stores: App Store (iOS), Play Store (Android), or both
- App name: final display name (may differ from project name)
- Current state: has the app been submitted before, or is this the first release
-
App icon requirements.
Platform Size Format Notes iOS 1024x1024 px PNG, no alpha Single icon; iOS generates all sizes Android 512x512 px PNG, 32-bit Used in Play Store listing Adaptive (Android) 108x108 dp foreground + background PNG For launcher; configure in app.jsonIn Expo
app.json:{ "expo": { "icon": "./assets/icon.png", "android": { "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#FFFFFF" } } } }Tips: no transparency on iOS (Apple rejects it), no text in the icon (does not scale), test on dark and light wallpapers.
-
Screenshot requirements.
iOS (App Store Connect):
Device Size (portrait) Required iPhone 6.7" (15 Pro Max) 1290 x 2796 Yes (at minimum one set) iPhone 6.5" (11 Pro Max) 1242 x 2688 Recommended iPhone 5.5" (8 Plus) 1242 x 2208 Only if supporting older devices iPad Pro 12.9" 2048 x 2732 Required if iPad app Minimum 1 screenshot, maximum 10 per device size. First 3 are visible in search results.
Android (Play Console):
Type Size Required Phone 320-3840 px, 16:9 or 9:16 Min 2, max 8 Tablet 7" 320-3840 px If targeting tablets Tablet 10" 320-3840 px If targeting tablets Feature graphic 1024 x 500 Required Tips: use real device screenshots with a clean status bar, or design marketing frames. Tools: Fastlane
screengrab/snapshot, or design in Figma with device frames. -
App metadata.
iOS:
Field Limit Notes App Name 30 chars Shown below icon; cannot include generic terms alone Subtitle 30 chars Appears below name in search Keywords 100 chars Comma-separated, not visible to users Description 4000 chars Not indexed for search; sell the app Promotional Text 170 chars Can update without new build What's New 4000 chars Release notes Android:
Field Limit Notes App Name 30 chars Title in Play Store Short Description 80 chars Shown in listing header Full Description 4000 chars Indexed for search -
Privacy policy. Both stores require a publicly accessible privacy policy URL. Must cover:
- What data is collected
- How data is used
- Third-party services (analytics, crash reporting, ads)
- Data retention and deletion policy
- Contact information
Set in
app.json:{ "expo": { "ios": { "privacyManifests": { "NSPrivacyAccessedAPITypes": [] } } } }And provide the URL in App Store Connect / Play Console.
-
Age rating / content rating.
- iOS: Fill the age rating questionnaire in App Store Connect (violence, language, etc.). Apple updated the age rating system in January 2026; review your responses.
- Android: Complete the content rating questionnaire in Play Console (uses IARC system)
Both are required before the first submission.
-
Review guideline checklist. Common rejection reasons:
Issue Platform How to avoid Crashes on launch Both Test on real devices, not just simulators Placeholder content Both Remove "lorem ipsum" and test data Missing login credentials iOS Provide demo account in review notes No privacy policy Both Add URL before submitting Misleading metadata Both Screenshots must show actual app UI External payment links iOS Do not link to web payment outside IAP Missing App Tracking Transparency iOS Add ATT prompt if using IDFA Missing AI disclosure iOS If using AI, explain what it does and what data it uses Target API too low Android Must target latest or latest-1 API level (API 36 from Aug 2026) -
Version numbering.
{ "expo": { "version": "1.0.0", "ios": { "buildNumber": "1" }, "android": { "versionCode": 1 } } }version(semver): displayed to users in the storebuildNumber(iOS): must increment for each upload to App Store ConnectversionCode(Android): must increment for each upload to Play Console
- App Store Review Guidelines
- Google Play Developer Policy
- Expo: Deploying to app stores
- App Store Connect Help
- Google Play Console Help
User: "I'm ready to publish my app. What do I need?"
Agent:
- Runs
mobile_validateStoreMetadatato check app.json for missing fields - Reviews icon size and format
- Lists required screenshots per device
- Checks for privacy policy URL
- Walks through metadata fields (name, description, keywords)
- Reminds about age rating questionnaire
- Points to
mobile-ios-submissionormobile-android-submissionfor the actual submission flow
| Step | MCP Tool | Description |
|---|---|---|
| Validate metadata | mobile_validateStoreMetadata |
Check all required store fields are present |
| Build for store | mobile_buildForStore |
Create production build (EAS Build) |
| Check build health | mobile_checkBuildHealth |
Verify project compiles before building |
- Icon with alpha channel on iOS - Apple rejects icons with transparency. Export as PNG with a solid background.
- Screenshots from simulator with debug overlay - Status bars with debug info, development banners, or Expo Go branding will get rejected.
- Forgetting buildNumber / versionCode increment - Each upload must have a higher number than the previous. Build will be rejected otherwise.
- Generic app name - Apple rejects names like "Calculator" or "Weather" that are too generic. Add a unique qualifier.
- Missing privacy manifest on iOS - iOS 17+ requires declaring API usage reasons. Expo handles common ones, but custom native code needs manual entries.
- Screenshots not matching current UI - Both stores reject screenshots that misrepresent the app. Update screenshots with every major UI change.
- Mobile iOS Submission - submit to App Store after prep
- Mobile Android Submission - submit to Play Store after prep
- Mobile Permissions - ATT and permission prompts required for review