8 min read • Guide 762 of 877
Mobile Development with GitScrum
Mobile development has unique challenges - multiple platforms, app store processes, and device fragmentation. GitScrum helps teams coordinate mobile work effectively.
Mobile Project Structure
Platform Organization
MOBILE PROJECT ORGANIZATION:
┌─────────────────────────────────────────────────────────────┐
│ │
│ APPROACH 1: SHARED STORIES │
│ │
│ FEATURE STORY: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ MOB-100: Add Push Notifications ││
│ │ ││
│ │ Subtasks: ││
│ │ ├── MOB-101: [iOS] Push notification setup ││
│ │ ├── MOB-102: [Android] Push notification setup ││
│ │ ├── MOB-103: [Backend] Push API endpoint ││
│ │ └── MOB-104: [QA] Test on both platforms ││
│ │ ││
│ │ Labels: feature, ios, android, backend ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ APPROACH 2: PLATFORM LABELS │
│ │
│ All mobile tasks: │
│ Labels: mobile + (ios | android | both) │
│ │
│ Filters: │
│ • "iOS work": mobile + ios │
│ • "Android work": mobile + android │
│ • "Cross-platform": mobile + both │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ TEAM STRUCTURE: │
│ │
│ OPTION A: Platform teams │
│ iOS Team: All iOS work │
│ Android Team: All Android work │
│ → Good for native expertise │
│ │
│ OPTION B: Feature teams │
│ Team members do both platforms │
│ → Good for cross-platform frameworks │
│ │
│ OPTION C: Hybrid │
│ Features owned by team, platform specialists support │
└─────────────────────────────────────────────────────────────┘
Release Planning
MOBILE RELEASE MANAGEMENT:
┌─────────────────────────────────────────────────────────────┐
│ │
│ RELEASE TIMELINE: │
│ │
│ Code freeze Submit to stores Release │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ────●────────────────────●───────────────●───────────── │
│ Day 1 Day 3 Day 5-10 │
│ (after review) │
│ │
│ PLAN FOR REVIEW TIME: │
│ iOS: 1-7 days (usually 1-2 days) │
│ Android: Usually < 1 day (sometimes hours) │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ RELEASE EPIC: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ REL-200: Version 2.5.0 Release ││
│ │ ││
│ │ Target release: Feb 15, 2024 ││
│ │ ││
│ │ Pre-submission: ││
│ │ ☐ Code freeze (Feb 8) ││
│ │ ☐ QA sign-off (Feb 10) ││
│ │ ☐ Release notes prepared ││
│ │ ☐ Screenshots updated (if needed) ││
│ │ ││
│ │ Submission: ││
│ │ ☐ Submit to App Store (Feb 11) ││
│ │ ☐ Submit to Play Store (Feb 11) ││
│ │ ││
│ │ Post-submission: ││
│ │ ☐ Monitor review status ││
│ │ ☐ Address any rejection feedback ││
│ │ ☐ Coordinate release (Feb 15) ││
│ │ ││
│ │ Post-release: ││
│ │ ☐ Monitor crash reports ││
│ │ ☐ Watch reviews and ratings ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
App Store Considerations
Handling Rejections
APP STORE REJECTION WORKFLOW:
┌─────────────────────────────────────────────────────────────┐
│ │
│ REJECTION RECEIVED: │
│ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 🔴 App Store Rejection ││
│ │ ││
│ │ Reason: Guideline 4.2 - Minimum Functionality ││
│ │ "Your app's core feature requires additional value" ││
│ │ ││
│ │ Response needed by: Feb 14, 2024 ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ IMMEDIATE ACTIONS: │
│ │
│ 1. CREATE URGENT TASK │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 🔴 MOB-201: Address App Store Rejection ││
│ │ ││
│ │ Priority: Critical ││
│ │ Due: Feb 13, 2024 (before deadline) ││
│ │ Labels: app-store, rejection, ios ││
│ │ ││
│ │ Rejection reason: [paste details] ││
│ │ ││
│ │ Options: ││
│ │ ☐ Appeal (if we disagree) ││
│ │ ☐ Fix and resubmit ││
│ │ ││
│ │ Decision: [to be determined] ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ 2. ASSESS AND DECIDE │
│ • Is rejection valid? │
│ • Can we fix quickly? │
│ • Should we appeal? │
│ │
│ 3. FIX OR APPEAL │
│ • Make changes if needed │
│ • Prepare appeal response if disputing │
│ • Resubmit ASAP │
│ │
│ 4. LEARN │
│ • Document what caused rejection │
│ • Add to pre-submission checklist │
│ • Prevent future rejections │
└─────────────────────────────────────────────────────────────┘
Pre-submission Checklist
APP SUBMISSION CHECKLIST:
┌─────────────────────────────────────────────────────────────┐
│ │
│ BEFORE EVERY SUBMISSION: │
│ │
│ BUILD: │
│ ☐ Version number incremented │
│ ☐ Build number incremented │
│ ☐ No debug/development code │
│ ☐ Correct signing certificates │
│ ☐ Release build tested │
│ │
│ CONTENT: │
│ ☐ Privacy policy up to date │
│ ☐ App Store/Play Store description current │
│ ☐ Screenshots match current UI │
│ ☐ What's New / Release notes written │
│ │
│ COMPLIANCE: │
│ ☐ Permissions justified in description │
│ ☐ IDFA/tracking disclosure accurate │
│ ☐ Data collection disclosure correct │
│ ☐ Age rating appropriate │
│ ☐ No private API usage (iOS) │
│ │
│ TESTING: │
│ ☐ Tested on minimum supported OS versions │
│ ☐ Tested on various screen sizes │
│ ☐ Core flows work without network │
│ ☐ Login/payment flows verified │
│ │
│ IOS SPECIFIC: │
│ ☐ App Tracking Transparency if tracking │
│ ☐ Sign in with Apple if other social logins │
│ ☐ In-app purchases use Apple system │
│ │
│ ANDROID SPECIFIC: │
│ ☐ Target SDK meets Play Store requirements │
│ ☐ Permissions follow best practices │
│ ☐ 64-bit support included │
└─────────────────────────────────────────────────────────────┘
Cross-Platform Development
Framework Considerations
CROSS-PLATFORM FRAMEWORK WORK:
┌─────────────────────────────────────────────────────────────┐
│ │
│ FRAMEWORKS: │
│ React Native, Flutter, Xamarin, etc. │
│ │
│ BENEFITS FOR PROJECT MANAGEMENT: │
│ │
│ ✅ Single codebase = single story │
│ ✅ Faster iteration │
│ ✅ Smaller team needed │
│ ✅ Easier feature parity │
│ │
│ CHALLENGES: │
│ │
│ ⚠️ Platform-specific bugs │
│ → Need platform-specific testing tasks │
│ │
│ ⚠️ Native module work │
│ → Separate tasks for iOS/Android native code │
│ │
│ ⚠️ Different release timelines │
│ → Can't always release simultaneously │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ STORY STRUCTURE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ MOB-300: Add Camera Feature (React Native) ││
│ │ ││
│ │ ☐ Implement camera UI (shared) ││
│ │ ☐ iOS: Camera permissions + native module ││
│ │ ☐ Android: Camera permissions + native module ││
│ │ ☐ Test on iOS devices ││
│ │ ☐ Test on Android devices ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ Even cross-platform needs platform-specific testing │
└─────────────────────────────────────────────────────────────┘
Device Testing
Test Matrix
DEVICE TESTING STRATEGY:
┌─────────────────────────────────────────────────────────────┐
│ │
│ IOS DEVICE MATRIX: │
│ │
│ Priority 1 (Must test): │
│ • Latest iPhone (e.g., iPhone 15) │
│ • Previous iPhone (e.g., iPhone 14) │
│ • Oldest supported (e.g., iPhone 8) │
│ • iPad (if supporting tablet) │
│ │
│ Priority 2 (Should test): │
│ • Various screen sizes (SE, Pro Max) │
│ • Different iOS versions (latest, latest-1) │
│ │
│ ANDROID DEVICE MATRIX: │
│ │
│ Priority 1 (Must test): │
│ • Popular Samsung (Galaxy S series) │
│ • Popular Pixel (Google reference) │
│ • Low-end device (memory/performance) │
│ │
│ Priority 2 (Should test): │
│ • Various screen densities │
│ • Different Android versions (12, 13, 14) │
│ • Different manufacturers (Samsung, Pixel, Xiaomi) │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ GITSCRUM QA TASK: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ QA-150: Device Testing v2.5.0 ││
│ │ ││
│ │ iOS Testing: ││
│ │ ☐ iPhone 15 Pro (iOS 17) ││
│ │ ☐ iPhone 12 (iOS 16) ││
│ │ ☐ iPhone SE (iOS 15) ││
│ │ ││
│ │ Android Testing: ││
│ │ ☐ Pixel 8 (Android 14) ││
│ │ ☐ Samsung S23 (Android 13) ││
│ │ ☐ Low-end device (Android 12) ││
│ │ ││
│ │ Focus areas: ││
│ │ • New push notification feature ││
│ │ • Performance on older devices ││
│ │ • Offline functionality ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘