xiaohongshu
xiaohongshu
capacitor-app-store
Complete guide to publishing Capacitor apps to Apple App Store and Google Play Store. Covers app preparation, screenshots, metadata, review guidelines, and submission process. Use this skill when users are ready to publish their app.
Full skill instructions
Guide to submitting Capacitor apps to Apple App Store and Google Play Store.
// capacitor.config.ts - Not stored here, just for reference
// iOS: Info.plist
// CFBundleShortVersionString = "1.2.3" (user-visible)
// CFBundleVersion = "45" (build number, increment each upload)
// Android: build.gradle
// versionName = "1.2.3" (user-visible)
// versionCode = 45 (must increment each upload)
<!-- ios/App/App/Info.plist -->
<key>CFBundleDisplayName</key>
<string>My App</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<!-- Privacy descriptions - REQUIRED for permissions -->
<key>NSCameraUsageDescription</key>
<string>Take photos for your profile</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Select photos from your library</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Find nearby locations</string>
<key>NSFaceIDUsageDescription</key>
<string>Secure login with Face ID</string>
<key>NSMicrophoneUsageDescription</key>
<string>Record voice messages</string>
<!-- App Tracking Transparency -->
<key>NSUserTrackingUsageDescription</key>
<string>Allow tracking for personalized ads</string>
<!-- Export compliance -->
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
// android/app/build.gradle
android {
defaultConfig {
applicationId "com.yourcompany.yourapp"
minSdkVersion 22
targetSdkVersion 34
versionCode 1
versionName "1.0.0"
// 64-bit support
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
Required sizes (place in Assets.xcassets):
| Size | Scale | Usage |
|---|---|---|
| 20pt | 2x, 3x | Notification |
| 29pt | 2x, 3x | Settings |
| 40pt | 2x, 3x | Spotlight |
| 60pt | 2x, 3x | App Icon |
| 76pt | 1x, 2x | iPad |
| 83.5pt | 2x | iPad Pro |
| 1024pt | 1x | App Store |
Required sizes (place in res/mipmap-*):
| Density | Size | Folder |
|---|---|---|
| mdpi | 48x48 | mipmap-mdpi |
| hdpi | 72x72 | mipmap-hdpi |
| xhdpi | 96x96 | mipmap-xhdpi |
| xxhdpi | 144x144 | mipmap-xxhdpi |
| xxxhdpi | 192x192 | mipmap-xxxhdpi |
Also needed:
# Use capacitor-assets
bun add -D @capacitor/assets
bunx capacitor-assets generate --iconBackgroundColor '#ffffff'
| Device | Size | Required |
|---|---|---|
| iPhone 6.7" | 1290x2796 | Yes |
| iPhone 6.5" | 1284x2778 | Yes |
| iPhone 5.5" | 1242x2208 | Yes |
| iPad Pro 12.9" | 2048x2732 | If supporting iPad |
| iPad Pro 11" | 1668x2388 | If supporting iPad |
| Type | Size | Required |
|---|---|---|
| Phone | 1080x1920 to 1080x2400 | Yes (2-8) |
| 7" Tablet | 1200x1920 | If supporting |
| 10" Tablet | 1600x2560 | If supporting |
// Use Playwright for automated screenshots
import { test } from '@playwright/test';
const devices = [
{ name: 'iPhone 14 Pro Max', viewport: { width: 430, height: 932 } },
{ name: 'iPhone 14', viewport: { width: 390, height: 844 } },
{ name: 'Pixel 7', viewport: { width: 412, height: 915 } },
];
test('generate screenshots', async ({ page }) => {
for (const device of devices) {
await page.setViewportSize(device.viewport);
// Screenshot 1: Home
await page.goto('/');
await page.screenshot({
path: `screenshots/${device.name}-home.png`,
fullPage: false,
});
// Screenshot 2: Feature
await page.goto('/feature');
await page.screenshot({
path: `screenshots/${device.name}-feature.png`,
});
}
});
# Using Xcode
# Product > Archive > Distribute App > App Store Connect
# Using Fastlane
fastlane ios release
# Using xcrun
xcrun altool --upload-app --type ios --file App.ipa \
--apiKey KEY_ID --apiIssuer ISSUER_ID
Complete the questionnaire for IARC rating
# Build AAB (required for new apps)
cd android && ./gradlew bundleRelease
# Upload via Play Console or API
# Production > Create new release > Upload AAB
| Track | Purpose |
|---|---|
| Internal testing | Up to 100 testers, instant |
| Closed testing | Invite-only, review |
| Open testing | Public beta |
| Production | Full release |
| Reason | Solution |
|---|---|
| Crashes | Test on real devices, fix bugs |
| Broken links | Verify all URLs work |
| Incomplete metadata | Fill all required fields |
| Missing privacy info | Complete App Privacy section |
| Login issues | Provide demo account |
| Guideline 4.2 (Minimum Functionality) | Add meaningful features |
| Guideline 5.1.1 (Data Collection) | Justify data usage |
| Reason | Solution |
|---|---|
| Crashes/ANRs | Fix stability issues |
| Policy violation | Review Play policies |
| Deceptive behavior | Be transparent about features |
| Sensitive permissions | Justify in-app |
| Target SDK too low | Update to API 34+ |
# Increment patch (1.0.0 -> 1.0.1)
bun version patch
# Increment minor (1.0.0 -> 1.1.0)
bun version minor
# Increment major (1.0.0 -> 2.0.0)
bun version major
iOS:
Android:
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience