원클릭으로
mobile-app-store-prep
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.
메뉴
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.
Automated and manual accessibility auditing, WCAG compliance, and screen reader testing for mobile apps
Integrate AI APIs (OpenAI, Anthropic, Google AI) into a React Native/Expo app. Covers vision, text generation, and audio transcription with secure API key management. Use when the user wants to add AI-powered features to their mobile app.
Add crash reporting and event tracking to a React Native/Expo or Flutter app. Covers Sentry, Firebase Crashlytics, PostHog, source map upload, user identification, session recording, and GDPR compliance. Use when the user wants visibility into crashes, user behavior, or app performance in production.
Submit an Expo/React Native app to the Google Play Store. Covers Play Console setup, signing keys, AAB format, EAS Build and Submit, service accounts, content ratings, and staged rollouts. Use when the user wants to publish to Google Play.
Add animations to a React Native/Expo or Flutter app. Covers Reanimated 3 (shared values, worklets, gesture-driven), Lottie and Rive for vector animations, implicit and explicit Flutter animations, Hero transitions, and performance best practices. Use when the user wants smooth UI transitions, loading animations, or gesture-driven motion.
Integrate REST and GraphQL APIs into a React Native/Expo app. Covers fetch, Axios, React Query, urql, auth headers, retry logic, offline queuing, and optimistic updates. Use when the user needs to connect their app to a backend API.
| 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.10.0 |
Use this skill when the user:
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.json |
In 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:
Set in app.json:
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyAccessedAPITypes": []
}
}
}
}
And provide the URL in App Store Connect / Play Console.
Age rating / content rating.
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 ConsoleUser: "I'm ready to publish my app. What do I need?"
Agent:
mobile_validateStoreMetadata to check app.json for missing fieldsmobile-ios-submission or mobile-android-submission for 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 |