๐Ÿ“ฑ [CRITICAL] Create native mobile app structure for iOS/Android store submission

Resolved ๐Ÿ’ฌ 3 comments Opened Aug 4, 2025 by adrianwedd Closed Aug 4, 2025

GitHub Issue: React Native App Store Submission Setup

Title

๐Ÿ“ฑ [CRITICAL] Create native mobile app structure for iOS/Android store submission

Priority

HIGH - Blocking mobile app store submissions (Apple App Store, Google Play Store)

Description

The Claude Code mobile application currently exists as a React Native project but lacks the native iOS and Android project structures required for app store submission. The current setup is incomplete for production mobile app deployment.

Current State Analysis

Missing Critical Components

  • [ ] Android native project (android/ directory with Gradle setup)
  • [ ] iOS native project (ios/ directory with Xcode project)
  • [ ] App store metadata and configuration files
  • [ ] Code signing and build configurations
  • [ ] Store-specific assets and screenshots

Existing Assets

  • โœ… React Native TypeScript codebase
  • โœ… Package.json with mobile dependencies
  • โœ… Navigation and component structure
  • โœ… CI/CD pipeline configuration (basic mobile build steps)

Implementation Requirements

A. Initialize React Native Projects

1. Reinitialize React Native with native code:

cd mobile-app
# Backup existing source code
cp -r src/ ../mobile-app-backup/

# Initialize new React Native project with native code
npx react-native init ClaudeCodeMobile --template react-native-template-typescript
# Copy back custom source code and configurations

2. Alternative approach - Add native projects to existing structure:

cd mobile-app
npx react-native eject  # If using Expo
# OR
react-native upgrade   # To add native directories

B. Android Configuration

1. Create/Update android/app/build.gradle:

android {
    compileSdkVersion 34
    buildToolsVersion "34.0.0"
    
    defaultConfig {
        applicationId "com.claudecode.mobile"
        minSdkVersion 21
        targetSdkVersion 34
        versionCode 1
        versionName "1.0.0"
        multiDexEnabled true
    }
    
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
                storeFile file(MYAPP_UPLOAD_STORE_FILE)
                storePassword MYAPP_UPLOAD_STORE_PASSWORD
                keyAlias MYAPP_UPLOAD_KEY_ALIAS
                keyPassword MYAPP_UPLOAD_KEY_PASSWORD
            }
        }
    }
    
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }
}

2. Android app icons and resources:

android/app/src/main/res/
โ”œโ”€โ”€ mipmap-hdpi/
โ”‚   โ””โ”€โ”€ ic_launcher.png (72x72)
โ”œโ”€โ”€ mipmap-mdpi/
โ”‚   โ””โ”€โ”€ ic_launcher.png (48x48)
โ”œโ”€โ”€ mipmap-xhdpi/
โ”‚   โ””โ”€โ”€ ic_launcher.png (96x96)
โ”œโ”€โ”€ mipmap-xxhdpi/
โ”‚   โ””โ”€โ”€ ic_launcher.png (144x144)
โ”œโ”€โ”€ mipmap-xxxhdpi/
โ”‚   โ””โ”€โ”€ ic_launcher.png (192x192)
โ””โ”€โ”€ values/
    โ”œโ”€โ”€ strings.xml
    โ””โ”€โ”€ colors.xml

C. iOS Configuration

1. Xcode project setup in ios/ClaudeCodeMobile.xcodeproj:

<!-- ios/ClaudeCodeMobile/Info.plist -->
<key>CFBundleDisplayName</key>
<string>Claude Code</string>
<key>CFBundleIdentifier</key>
<string>com.claudecode.mobile</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
</dict>

2. iOS app icons:

ios/ClaudeCodeMobile/Images.xcassets/AppIcon.appiconset/
โ”œโ”€โ”€ Icon-20.png (20x20)
โ”œโ”€โ”€ Icon-20@2x.png (40x40)
โ”œโ”€โ”€ Icon-20@3x.png (60x60)
โ”œโ”€โ”€ Icon-29.png (29x29)
โ”œโ”€โ”€ Icon-29@2x.png (58x58)
โ”œโ”€โ”€ Icon-29@3x.png (87x87)
โ”œโ”€โ”€ Icon-40.png (40x40)
โ”œโ”€โ”€ Icon-40@2x.png (80x80)
โ”œโ”€โ”€ Icon-40@3x.png (120x120)
โ”œโ”€โ”€ Icon-60@2x.png (120x120)
โ”œโ”€โ”€ Icon-60@3x.png (180x180)
โ”œโ”€โ”€ Icon-76.png (76x76)
โ”œโ”€โ”€ Icon-76@2x.png (152x152)
โ”œโ”€โ”€ Icon-83.5@2x.png (167x167)
โ””โ”€โ”€ Icon-1024.png (1024x1024)

D. App Store Configuration Files

1. Android - Create android/app/src/main/play/:

play/
โ”œโ”€โ”€ release-notes/
โ”‚   โ””โ”€โ”€ en-US/
โ”‚       โ””โ”€โ”€ default.txt
โ”œโ”€โ”€ listings/
โ”‚   โ””โ”€โ”€ en-US/
โ”‚       โ”œโ”€โ”€ title.txt ("Claude Code - AI Development")
โ”‚       โ”œโ”€โ”€ short-description.txt
โ”‚       โ”œโ”€โ”€ full-description.txt
โ”‚       โ””โ”€โ”€ graphics/
โ”‚           โ”œโ”€โ”€ icon/ (512x512 PNG)
โ”‚           โ”œโ”€โ”€ feature-graphic/ (1024x500 PNG)
โ”‚           โ””โ”€โ”€ phone-screenshots/ (multiple PNG files)
โ””โ”€โ”€ contact-website.txt

2. iOS - App Store Connect metadata:

// ios/metadata.json
{
  "name": "Claude Code",
  "subtitle": "AI-Powered Development Environment",
  "description": "Intelligent coding assistant powered by Claude AI with real-time collaboration and advanced development tools.",
  "keywords": "development,coding,ai,claude,programming,ide",
  "copyright": "ยฉ 2024 Claude Code",
  "privacy_policy": "https://claude-code.dev/privacy",
  "category": "DEVELOPER_TOOLS",
  "age_rating": "4+"
}

E. Build Scripts and Automation

1. Update package.json scripts:

{
  "scripts": {
    "android:build": "cd android && ./gradlew assembleRelease",
    "android:bundle": "cd android && ./gradlew bundleRelease",
    "ios:build": "cd ios && xcodebuild -workspace ClaudeCodeMobile.xcworkspace -scheme ClaudeCodeMobile -configuration Release -sdk iphoneos -archivePath ClaudeCodeMobile.xcarchive archive",
    "ios:export": "cd ios && xcodebuild -exportArchive -archivePath ClaudeCodeMobile.xcarchive -exportPath ./build -exportFormat ipa -exportOptionsPlist exportOptions.plist",
    "store:android": "npm run android:bundle && fastlane android deploy",
    "store:ios": "npm run ios:build && npm run ios:export && fastlane ios deploy"
  }
}

2. Fastlane setup for automated deployment:

# Fastfile
platform :android do
  desc "Deploy to Google Play Store"
  lane :deploy do
    gradle(task: "bundleRelease")
    upload_to_play_store(
      track: "production",
      release_status: "draft"
    )
  end
end

platform :ios do
  desc "Deploy to App Store"
  lane :deploy do
    build_app(scheme: "ClaudeCodeMobile")
    upload_to_app_store(
      submit_for_review: false,
      automatic_release: false
    )
  end
end

Technical Requirements

Development Tools Needed

  • Android: Android Studio, JDK 11+, Android SDK 34
  • iOS: Xcode 15+, iOS SDK 17+, macOS development machine
  • Certificates: Apple Developer Account, Google Play Console Account
  • CI/CD: Updated GitHub Actions with signing certificates

App Store Requirements Compliance

Google Play Store:

  • [ ] Target SDK 34 (Android 14)
  • [ ] 64-bit native code support
  • [ ] Privacy policy URL
  • [ ] Content rating questionnaire
  • [ ] App bundle format (.aab)

Apple App Store:

  • [ ] iOS 12.0+ minimum deployment target
  • [ ] Privacy nutrition labels
  • [ ] App Transport Security compliance
  • [ ] Notarization for distribution

Success Criteria

  • [ ] Android APK/AAB builds successfully
  • [ ] iOS IPA builds and archives successfully
  • [ ] Apps install and run on physical devices
  • [ ] Store validation passes (Play Console, App Store Connect)
  • [ ] CI/CD pipeline builds mobile apps without errors
  • [ ] All app store metadata and assets are complete

Testing Requirements

1. Local Build Testing:

# Android
cd mobile-app
npm run android:build
# Test APK installation on Android device

# iOS (macOS only)
npm run ios:build
# Test IPA installation via Xcode or TestFlight

2. Store Validation:

  • Google Play Console > Internal testing track
  • Apple App Store Connect > TestFlight internal testing

Timeline

Estimated Completion: 12-16 hours

  • Native project setup: 4 hours
  • Asset generation and configuration: 4 hours
  • Build script configuration: 3 hours
  • Store metadata preparation: 3 hours
  • Testing and validation: 2-3 hours

Dependencies

  • macOS machine for iOS development
  • Android development environment
  • Developer account access (Apple Developer Program, Google Play Console)
  • Code signing certificates and provisioning profiles
  • CI/CD secret management for certificates

Related Files

  • /mobile-app/package.json
  • /mobile-app/android/ (to be created)
  • /mobile-app/ios/ (to be created)
  • /.github/workflows/production-deploy.yml (mobile build steps)

Risks and Mitigation

  • Risk: Loss of existing React Native code during restructuring
  • Mitigation: Complete backup before native project initialization
  • Risk: Certificate and signing complexity
  • Mitigation: Use GitHub Actions encrypted secrets, document signing process
  • Risk: Platform-specific build failures
  • Mitigation: Test builds locally before CI/CD integration

Impact

CRITICAL BUSINESS IMPACT - This issue blocks:

  • Mobile app store presence (App Store, Google Play)
  • Native mobile app distribution channels
  • Mobile user acquisition and retention
  • Revenue generation from mobile platform
  • Competitive positioning in mobile development tools market

View original on GitHub โ†—

This issue has 3 comments on GitHub. Read the full discussion on GitHub โ†—