What is App Deployment?
App deployment is the process of publishing your finished app to the Apple App Store (iOS) and Google Play Store (Android) so users worldwide can download and install it. Think of it like publishing a book - you've written it, edited it, and now you need to work with a publisher to get it into bookstores where readers can buy it.
The deployment process involves preparing your app, creating certificates, following strict guidelines, submitting for review, and finally releasing it to the public. It's like getting your driver's license - there's paperwork, tests, and approval processes before you can hit the road.
Why Understanding Deployment Matters
- Getting to Market: Your app is useless if users can't download it
- Professional Credibility: Proper deployment shows professionalism
- User Trust: Official stores provide security and trust
- Updates: Stores enable easy app updates for bug fixes
- Revenue: Stores handle payments for paid apps and in-app purchases
- Analytics: Get insights on downloads, ratings, and reviews
- Discovery: Users find your app through store search
Pre-Deployment Checklist
Before submitting your app, ensure everything is ready. Think of this like a pre-flight checklist for pilots - miss one item and you can't take off.
Pre-Deployment Checklist:
┌──────────────────────────────────────┐
│ ✓ App is fully tested and bug-free │
│ ✓ All features work on real devices │
│ ✓ No placeholder content │
│ ✓ Privacy Policy URL created │
│ ✓ App icon designed (all sizes) │
│ ✓ Screenshots prepared (all sizes) │
│ ✓ App description written │
│ ✓ Keywords researched │
│ ✓ Support email/website ready │
│ ✓ Age rating determined │
│ ✓ Pricing decided │
│ ✓ Release date planned │
└──────────────────────────────────────┘
Google Play Store Deployment
Publishing to Android's Google Play Store is generally easier and faster than iOS. Think of it as the more relaxed sibling - still has rules, but more forgiving.
Step 1: Create Developer Account
Account Setup:
┌────────────────────────────────────┐
│ 1. Go to play.google.com/console │
│ 2. One-time fee: $25 │
│ 3. Fill developer profile │
│ 4. Verify identity │
│ 5. Accept agreements │
└────────────────────────────────────┘
What you need:
- Gmail account
- Credit/debit card for $25 fee
- Developer name (individual or company)
- Phone number for verification
Step 2: Build Release APK/AAB
# React Native - Generate Android Release Build
# 1. Generate Signing Key
cd android/app
keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore \
-alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
# Save password safely! You'll need it for every update
# 2. Configure Gradle (android/gradle.properties)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=****
MYAPP_RELEASE_KEY_PASSWORD=****
# 3. Update app/build.gradle
android {
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
}
# 4. Build Release
cd android
./gradlew bundleRelease
# Output: android/app/build/outputs/bundle/release/app-release.aab
# AAB (Android App Bundle) is preferred over APK
# Google optimizes AAB for each device automatically
Step 3: Create App Listing
App Listing Requirements:
┌────────────────────────────────────────┐
│ App Icon: │
│ - 512x512 PNG │
│ - 32-bit with alpha │
│ - No transparency │
│ │
│ Feature Graphic: │
│ - 1024x500 JPG/PNG │
│ - Displayed in store listing │
│ │
│ Screenshots (2-8 required): │
│ - Phone: 320-3840px │
│ - Tablet: 1200-7680px (optional) │
│ - Show app's best features │
│ │
│ Short Description: │
│ - Max 80 characters │
│ - Hook users immediately │
│ │
│ Full Description: │
│ - Max 4000 characters │
│ - Explain features, benefits │
│ - Use bullet points for readability │
│ │
│ Categorization: │
│ - Choose primary category │
│ - Optional: secondary category │
│ - Add relevant tags │
└────────────────────────────────────────┘
Step 4: Content Rating
Answer questionnaire about your app's content (violence, language, etc.). Google assigns age rating automatically based on answers.
Step 5: Pricing and Distribution
Pricing Options:
- Free (can have ads or in-app purchases)
- Paid (one-time purchase price)
- Freemium (free download, paid features)
Distribution:
- Select countries (can choose all or specific)
- Device compatibility (phones, tablets, wear)
- Android version requirements
Step 6: Submit for Review
Review Time: Usually within hours to 3 days (much faster than iOS)
After Approval: App is live immediately or on scheduled release date
Apple App Store Deployment
iOS deployment is more rigorous and takes longer. Think of it as a prestigious restaurant with strict dress code and reservation requirements - higher standards, but worth the effort.
Step 1: Apple Developer Account
Account Setup:
┌────────────────────────────────────┐
│ 1. Go to developer.apple.com │
│ 2. Annual fee: $99/year │
│ 3. Individual or Organization │
│ 4. Verify identity (D-U-N-S for org)│
│ 5. Accept agreements │
└────────────────────────────────────┘
Approval time:
- Individual: 24-48 hours
- Organization: 1-2 weeks
What you need:
- Apple ID
- Credit card for $99/year
- For companies: D-U-N-S number
- Two-factor authentication enabled
Step 2: Certificates and Provisioning
This is the most confusing part of iOS deployment. Certificates prove your app is from you. Think of them like a passport and visa for your app to enter the App Store.
Certificate Types:
┌──────────────────────────────────────────────┐
│ Development Certificate: │
│ - For testing on real devices │
│ - Required during development │
│ │
│ Distribution Certificate: │
│ - For App Store submission │
│ - Required for release builds │
│ │
│ Push Notification Certificate (optional): │
│ - For sending push notifications │
└──────────────────────────────────────────────┘
Easy Way: Use Xcode's Automatic Signing
1. Open project in Xcode
2. Select your target
3. Signing & Capabilities tab
4. Check "Automatically manage signing"
5. Select your team
6. Xcode handles certificates automatically
Manual Way (Advanced):
1. Create Certificate Signing Request (CSR)
2. Upload to Apple Developer Portal
3. Download certificate
4. Create App ID
5. Create Provisioning Profile
6. Download and install in Xcode
Step 3: Build Release IPA
# React Native - Build iOS Release
# 1. Open Xcode
cd ios
open YourApp.xcworkspace
# 2. In Xcode:
# - Select "Any iOS Device (arm64)"
# - Product > Archive
# - Wait for build to complete
# 3. Organizer window opens:
# - Select your archive
# - Click "Distribute App"
# - Choose "App Store Connect"
# - Follow wizard steps
# - Upload to App Store Connect
# Alternative: Command line (advanced)
xcodebuild -workspace YourApp.xcworkspace \
-scheme YourApp \
-configuration Release \
-archivePath build/YourApp.xcarchive \
archive
# Then upload
xcodebuild -exportArchive \
-archivePath build/YourApp.xcarchive \
-exportPath build \
-exportOptionsPlist exportOptions.plist
Step 4: App Store Connect Setup
1. Go to appstoreconnect.apple.com
2. Click "My Apps" > "+" > "New App"
3. Fill in:
- Platform (iOS)
- App Name (30 characters max)
- Primary Language
- Bundle ID (must match Xcode)
- SKU (unique identifier, any string)
App Information Required:
┌────────────────────────────────────────┐
│ Screenshots (required for each size): │
│ - 6.7" (iPhone 14 Pro Max) │
│ - 6.5" (iPhone 11 Pro Max) │
│ - 5.5" (iPhone 8 Plus) │
│ - iPad Pro (12.9") │
│ - iPad Pro (11") │
│ - Use framer or screenshots.pro │
│ │
│ App Icon: │
│ - 1024x1024 PNG │
│ - No transparency or alpha │
│ - Rounded corners not needed │
│ │
│ App Preview (optional): │
│ - Video demo up to 30 seconds │
│ - Shows app in action │
│ │
│ Description: │
│ - Up to 4000 characters │
│ - First 170 chars visible in search │
│ - Use keywords naturally │
│ │
│ Keywords: │
│ - 100 characters max │
│ - Comma-separated │
│ - No spaces after commas │
│ - Example: photo,editor,filter,camera│
│ │
│ Support URL: (required) │
│ Marketing URL: (optional) │
│ Privacy Policy URL: (required) │
└────────────────────────────────────────┘
Step 5: App Review Information
Provide to Apple Reviewers:
┌────────────────────────────────────────┐
│ Contact Information: │
│ - First/Last name │
│ - Phone number │
│ - Email address │
│ │
│ Demo Account (if login required): │
│ - Username │
│ - Password │
│ - Any special instructions │
│ │
│ Notes: │
│ - Special features explanation │
│ - How to test specific features │
│ - Any configuration needed │
└────────────────────────────────────────┘
Age Rating:
- Answer questionnaire
- Apple assigns rating (4+, 9+, 12+, 17+)
- Be honest! Misrating = rejection
Step 6: Submit for Review
Review Time: 1-7 days (average 2-3 days)
Possible Outcomes:
- Approved: App goes live (or on scheduled date)
- Rejected: Fix issues and resubmit
- Metadata Rejected: Fix description/screenshots only
- In Review: Apple is testing your app
Common Rejection Reasons
iOS Rejections
- Crashes or Bugs: App must work perfectly
- Incomplete App: "Coming soon" features not allowed
- Broken Links: All links must work
- Wrong Description: Must match actual features
- Missing Privacy Policy: Required for all apps
- Permissions Not Explained: Must explain why you need camera, location, etc.
- Copycat Apps: Too similar to existing apps
- Low Quality: Must provide value to users
- Kids Category Violations: Strict rules for kids apps
Android Rejections
- Malware or Security Issues: Auto-rejected
- Inappropriate Content: Violence, hate speech, etc.
- Misleading Claims: Description must be accurate
- Copyright Violations: Using others' content
- Missing Privacy Policy: Required if collecting data
- Deceptive Behavior: Fake reviews, keyword stuffing
App Store Guidelines
Apple's Top Rules
Must Follow:
┌────────────────────────────────────────┐
│ 1. No crashes or bugs │
│ 2. Complete, polished app │
│ 3. Explain all permissions │
│ 4. Include privacy policy │
│ 5. Use Apple's in-app purchase system │
│ 6. Follow Human Interface Guidelines │
│ 7. Don't copy Apple's design │
│ 8. No misleading features │
│ 9. Kids apps: extra strict rules │
│ 10. Respect user privacy │
└────────────────────────────────────────┘
Permission Descriptions (Info.plist):
<key>NSCameraUsageDescription</key>
<string>We need camera access to let you take profile photos</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need your location to show nearby restaurants</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need photo access to let you upload images</string>
Google's Key Policies
- Restricted Content: No illegal activities, violence, hate speech
- Privacy: Transparent data collection, secure transmission
- Permissions: Only request necessary permissions
- Ads: Must be clearly marked, not intrusive
- Metadata: Accurate description and screenshots
- Monetization: Follow payment policies
Post-Launch Tasks
Immediate Actions
- Monitor Reviews: Respond to user feedback quickly
- Check Crash Reports: Fix bugs immediately
- Track Downloads: Monitor initial traction
- Watch Ratings: One star reviews hurt discoverability
- Prepare Support: Answer user questions
Ongoing Maintenance
Regular Tasks:
┌────────────────────────────────────────┐
│ Weekly: │
│ - Reply to reviews │
│ - Check crash reports │
│ - Monitor analytics │
│ │
│ Monthly: │
│ - Analyze user engagement │
│ - Plan new features │
│ - Update screenshots if needed │
│ │
│ Quarterly: │
│ - Major updates │
│ - Refresh marketing materials │
│ - Review pricing strategy │
│ │
│ Yearly: │
│ - Renew Apple Developer ($99) │
│ - Review app store optimization │
│ - Major redesign if needed │
└────────────────────────────────────────┘
App Updates
Releasing updates is similar to initial submission but faster. Think of it like returning to a restaurant you've been to - they already know you.
# Version Number Format: MAJOR.MINOR.PATCH
# Example: 1.2.3
Version Numbering:
- Bug fixes: 1.0.0 → 1.0.1 (patch)
- New features: 1.0.1 → 1.1.0 (minor)
- Major changes: 1.9.0 → 2.0.0 (major)
What's New Section:
Write clear, user-friendly notes:
Good:
"- Fixed login bug
- Added dark mode
- Improved app speed"
Bad:
"- Bug fixes and improvements"
"- Various updates"
Update Process:
1. Increment version in code
2. Build new release
3. Upload to stores
4. Update "What's New"
5. Submit for review
6. Usually faster approval (1-2 days)
App Store Optimization (ASO)
ASO is like SEO but for app stores. Get discovered by optimizing your listing.
- App Name: Include main keyword (but stay under character limit)
- Keywords: Research what users search for
- Description: First 2-3 lines are critical
- Screenshots: Show your best features first
- Icon: Unique, recognizable, looks good small
- Ratings: 4+ stars crucial for downloads
- Reviews: Encourage satisfied users to review
- Updates: Regular updates signal active development
Costs Summary
| Item | iOS | Android |
|---|---|---|
| Developer Account | $99/year | $25 one-time |
| Review Time | 1-7 days | Hours to 3 days |
| Rejection Rate | Higher (~14%) | Lower (~5%) |
| Revenue Share | 30% (15% after year 1) | 30% (15% after $1M) |
Best Practices
- Test Thoroughly: Test on multiple devices and OS versions
- Read Guidelines: Both stores have detailed documentation
- Quality First: Better to delay than ship buggy app
- Clear Communication: Write accurate descriptions
- Privacy Focus: Be transparent about data collection
- Responsive Support: Help users quickly when they have issues
- Regular Updates: Shows app is maintained
- Listen to Feedback: Users tell you what to improve
- Plan for Rejection: Don't plan launch around approval date
- Professional Assets: Invest in good icon and screenshots
Useful Tools
- Fastlane: Automate screenshots, builds, and uploads
- App Annie: Track rankings and competitors
- Sensor Tower: ASO and market intelligence
- TestFlight: Beta testing for iOS
- Firebase App Distribution: Beta testing for Android
- Figma/Sketch: Design screenshots and graphics
- Keynote/PowerPoint: Create app preview videos
Ready to Launch Your App?
Master the deployment process and get your app into users' hands
Explore Hybrid Mobile App Course