Skip to main content
JobCannon
All skills

Mobile Development (iOS / Android / React Native)

Build mobile apps, publish to app stores, optimize UX

β¬’ TIER 2Tech
+$30k-
Salary impact
10 months
Time to learn
Hard
Difficulty
4
Careers
TL;DR

Mobile development = building iOS/Android apps for users worldwide. Three paths: native (Swift/Kotlin, best performance, $120-200k), React Native/Flutter (cross-platform, 60-70% code reuse, $100-170k), or hybrid (web wrapper, cheapest but limited). Career: Junior (basic list views, $80-110k) β†’ Mid (offline-first, push notifications, API integration, $120-160k) β†’ Senior (architecture, performance optimization, 60FPS animations, $160-210k) over 8-12 months. App lifecycle: design UI, integrate APIs, implement monetization (IAP/subscriptions), handle app store submissions, monitor crashes with Sentry, track user behavior with AppsFlyer.

What is Mobile Development (iOS / Android / React Native)

Mobile development = building iOS/Android apps. High demand, adds $30k-$55k. Boost: +$30k-$55k

πŸ”§ TOOLS & ECOSYSTEM
React NativeFlutterSwiftSwiftUIKotlinJetpack ComposeXcodeAndroid StudioFirebaseRevenueCatSentryAppsFlyerCrashlytics

πŸ’° Salary by region

RegionJuniorMidSenior
USA$95k$145k$200k
UKΒ£55kΒ£85kΒ£130k
EU€60k€95k€145k
CANADAC$105kC$155kC$205k

🎯 Careers using Mobile Development (iOS / Android / React Native)

❓ FAQ

Native (Swift/Kotlin) vs React Native vs Flutter β€” which should I learn?
Native: Best performance, access to all device APIs, required for complex animations/AR. Swift: 1M+ iOS jobs, strong community. Kotlin: 1M+ Android jobs, also used for servers. React Native: 60% code sharing between iOS/Android, faster iteration, $20-30k cheaper to maintain than two native teams. Skills transfer from web React. Flutter: Dart language (small community), 70% code reuse, beautiful animations out of box, growing demand. For careers: learn React Native if you know JavaScript, learn native if you want max salary/performance.
How do I handle app store rejections?
Apple App Store rejection rate ~25% (most common: missing privacy labels, unclear in-app purchases, inactive features). Avoid: crashing on launch, missing IDFA consent, unclear screenshots. Read the rejection reason carefully β€” it's specific (e.g. 'Guideline 4.3: Design spam'). Fix, resubmit within 24-48 hours. Google Play is more lenient (rejection rate ~5%) but enforces tighter data privacy. Both: no promise of 'faster loading' without proof, no fake ratings, no bait-and-switch paywalls.
How do I implement push notifications properly?
iOS: request user permission (UIUserNotificationSettings), use APNs (Apple Push Notification service) with certificates/keys, handle token refresh. Android: Firebase Cloud Messaging (FCM) is standard, token rotates automatically. Server: send payload (title, body, custom data) to token. Client: handle tap (open deep link) and background receive. Common mistakes: not requesting permission upfront (iOS), not handling app-in-foreground case (Android), sending test notifications to inactive tokens (hits delivery rate). Use Firebase Cloud Messaging for both platforms (Apple supports it via APNs bridge).
What does 'offline-first' mean and how do I build it?
Offline-first = app works without internet, syncs when connection returns. Pattern: (1) local database (SQLite/Realm/Firebase Realtime), (2) queue outgoing changes, (3) background sync when online. Detect: `NetInfo.fetch()` on app resume. Sync: batch API calls, handle conflicts (last-write-wins, CRDT). For chat: use SQLite + observe connection state β†’ resume sending. For forms: save drafts locally, retry submission on network return. Libraries: WatermelonDB, Realm, Firebase local caching. Trade-off: adds ~200-500KB to bundle.
How do I optimize app size and startup time?
Size: code splitting (lazy load screens), remove unused assets, compress images to WebP, strip debug symbols. Typical bloat: React Native adds ~40MB (debug), native Swift app ~20MB base. Startup: measure with Xcode Profiler / Android Studio, profile first (often blocking API call on init). Avoid: loading all data at launch, large images in Bundle. Target: < 5s launch on iPhone 12, < 7s on mid-range Android. Use Firebase Performance for production monitoring.
How do I monetize an app β€” in-app purchases, subscriptions, or ads?
IAP (in-app purchase): one-time, cosmetics/premium content. Apple takes 30% (15% for subscriptions year 2+). Subscriptions: recurring, common for apps (Netflix, Spotify model). Setup: RevenueCat handles iOS/Android subscription logic + analytics. Ads: low-value unless 10M+ DAU. Best for most apps: free tier + $9.99/mo premium (like Spotify). PaymentKit / StoreKit2 on Apple, Google Play Billing Library on Android. Never implement payments yourself β€” use RevenueCat or Stripe.
What are deep links and why do they matter?
Deep link: URL that opens a specific screen in your app (e.g. `myapp://profile/123` or `https://myapp.com/profile/123`). Used for: marketing (track source), push notifications (tap = open offer), URL sharing. Setup: iOS scheme + Universal Links (https), Android App Links (https). Common mistake: not handling deep link in cold start (app not running). Pattern: save deep link on app launch, route after auth completes. Use Firebase Dynamic Links for short, trackable links that convert from web to app.

Not sure this skill is for you?

Take a 10-min Career Match β€” we'll suggest the right tracks.

Find my best-fit skills β†’

Find your ideal career path

Skill-based matching across 2,536 careers. Free, ~10 minutes.

Take Career Match β€” free β†’