Skip to Content
React Native15. iOS & au-delà15.1 Ce qui change pour iOS 🍏

Chapitre 15.1 — 🍏 Ce qui change pour iOS

Où on en est : Drill est une app Android aboutie — écrite en cross-platform. Ce chapitre déroule, théoriquement mais complètement, le jour où vous décideriez de la porter sur iPhone. Spoiler : le code est le plus petit des sujets.

⏱️ TL;DR — Le code : ~95 % identique (nos Platform.select et le langage iOS des composants sont déjà là). Le reste change : compte Apple Developer 99 $/AN, builds iOS via EAS cloud (pas besoin de Mac pour BUILDER — mais sans Mac ni iPhone, impossible de TESTER sérieusement), TestFlight pour la bêta, review App Store plus stricte (guidelines design), et des équivalences à connaître (APK→IPA, AAB→App Store Connect, keystore→certificats gérés par EAS).

🎯 Objectifs

  • Chiffrer le ticket d’entrée iOS (argent, matériel, temps).
  • Connaître le pipeline EAS iOS depuis Windows (et sa limite de test).
  • Mapper chaque concept Android du cours sur son équivalent Apple.
  • Auditer Drill : qu’est-ce qui demanderait une retouche iOS réelle ?

Le ticket d’entrée

PosteAndroid (vécu)iOS
Compte développeur25 $ une fois99 $/AN (Apple Developer Program)
Machine de buildLa vôtre (ou EAS)EAS cloud (Mac inutile pour builder)
Machine de TESTVotre téléphoneiPhone physique (ou simulateur → Mac)
BêtaPiste fermée (12×14 j si perso)TestFlight (pas de quota de testeurs imposé)
ReviewHeures → 7 j, surtout automatique24-48 h typique, plus humaine et design-opiniâtre

La ligne qui décide : le test. EAS builde l’IPA depuis Windows sans problème — mais développer pour une plateforme qu’on ne peut pas VOIR est une impasse (le simulateur exige un Mac ; un iPhone physique + build TestFlight est le minimum viable). Verdict pratique : le portage iOS devient raisonnable le jour où vous avez (a) un iPhone sous la main et (b) une app qui le mérite (demande réelle, monétisation — P17). Pas avant.

Le pipeline depuis Windows

eas build --profile production --platform ios # oui, depuis Windows eas submit --platform ios

Ce qu’EAS absout : la gestion des certificats — le pendant iOS du keystore, en pire (certificats de distribution, provisioning profiles, renouvellements ANNUELS). EAS génère, stocke, renouvelle : vous répondez à deux questions au premier build et n’y pensez plus. C’est, avec le build-sans-Mac, l’argument iOS le plus fort d’Expo.

Le circuit complet : eas build (IPA signé) → eas submit (App Store Connect — le « Play Console » d’Apple) → TestFlight (la bêta : installez sur VOTRE iPhone, invitez jusqu’à 10 000 testeurs par lien, review légère de 24 h pour la bêta elle-même) → soumission App Store → review complète → publication. Les OTA EAS Update : identiques (le channel sert les deux plateformes — un seul eas update met à jour Android ET iOS).

Les équivalences — le dictionnaire

Concept du coursÉquivalent iOS
APK (sideload)❌ n’existe pas vraiment (pas de sideload grand public) — TestFlight EST la « voie perso »
AAB → Play ConsoleIPA → App Store Connect
Keystore / upload keyCertificats + provisioning (gérés EAS)
versionCodebuildNumber
Adaptive iconIcône iOS (carrée, masquée par le système — PAS de transparence)
Test fermé 12×14 j❌ (TestFlight libre) — la contrainte Google n’a pas d’équivalent
Android vitalsXcode Organizer / App Store Connect metrics
Data SafetyPrivacy Nutrition Labels (déclaratif similaire)

Remarquez la symétrie des contraintes : Google fait payer en testeurs (test fermé), Apple en dollars et en review — chaque jardin a son péage.

L’audit iOS de Drill

Ce que NOTRE code demanderait réellement — la revue honnête :

  • Rien à faire : Expo Router, Zustand, TanStack Query, SQLite, Reanimated, gestes, notifications locales, OTA — tout est cross-platform par construction.
  • Déjà prêt (on l’a écrit en passant) : les ombres (Platform.select, ch. 3.6), le KeyboardAvoidingView behavior (ch. 3.5), le feedback pressed sans ripple (ch. 3.3 — android_ripple ignoré, l’opacité prend le relais).
  • Retouches réelles : l’icône (version carrée sans transparence), le splash (formats), tester la safe area de la Dynamic Island (notre useSafeAreaInsets la gère — à VÉRIFIER visuellement), et les haptics (le Taptic Engine rend mieux — tant mieux).
  • Le questionnaire d’Apple : Privacy Labels (copie du Data Safety), et la review design (Human Interface Guidelines — Drill, sobre et standard, passe sans frayeur).

Estimation totale pour Drill : 2-3 jours de travail + les délais administratifs. C’est la récompense du « code cross-platform, chaîne Android » décidé au premier jour : l’option iOS reste ouverte, à coût borné, sans avoir jamais ralenti le développement.

⚠️ Piège — Le piège du portage n’est pas technique : c’est l’engagement récurrent. 99 $/an + un target iOS à suivre + une review par mise à jour + tester sur un matériel qu’on n’utilise pas au quotidien : pour une app perso, c’est un LOYER permanent. La question n’est jamais « puis-je porter ? » (oui, facilement) mais « cette app justifie-t- elle un loyer annuel ? ». Pour un quiz perso : non. Pour l’app monétisée de la P17 : peut-être — les utilisateurs iOS paient statistiquement plus.

💡 Pour un dev Next.js — L’analogie qui remet les idées en place : ajouter iOS, c’est moins « supporter Firefox en plus de Chrome » que « déployer sur un second cloud avec son propre contrat commercial ». Le code est portable ; l’OPÉRATION est dupliquée. D’où la doctrine du cours : cross-platform dans le code (gratuit), mono-plateforme dans l’opération (jusqu’à preuve de besoin).

✏️ Exercices

1. Faites l’audit iOS de VOTRE version de Drill : grep les Platform., listez les endroits déjà bi-plateformes, et les 3 points qui demanderaient une vérification visuelle sur iPhone.

✅ Solution

grep -r "Platform\." app/ components/ lib/ → attendus : le behavior du KeyboardAvoidingView, les ombres du kit, d’éventuels selects de config. Vérifs visuelles : (1) safe areas Dynamic Island/notch sur l’écran quiz plein écran, (2) le rendu des haptics (calibrage), (3) la tab bar (hauteur/insets iOS). L’exercice démontre : la dette iOS de Drill tient sur un post-it — le cross-platform discipliné a payé.

2. Établissez le budget an-1 d’un portage iOS de Drill (argent + heures), puis le seuil de rentabilité si Drill était monétisé (P17) à 2 € de LTV moyenne par utilisateur iOS.

✅ Solution

An 1 : 99 $ (compte) + ~0 $ builds (EAS quota) + 2-3 j de portage + ~0,5 j/mise à jour (review, vérifs) — disons 4-5 jours-homme + 99 $. Seuil : ~50-60 installs iOS payants couvrent le cash ; le vrai coût est le temps. Conclusion type : un hobby ne le justifie pas ; une app à 500+ téléchargements/mois Android avec demande iOS explicite, oui. Le chiffrage transforme « un jour peut-être » en décision.

3. Sans Mac ni iPhone : jusqu’où pouvez-vous PRÉPARER le portage aujourd’hui, à coût nul ? Listez les 5 gestes.

✅ Solution

(1) Garder la discipline cross-platform (fait — continuer). (2) Ajouter la config iOS d’app.config.ts (bundleIdentifier — le package name d’Apple — icône carrée) : dormant, gratuit. (3) Vérifier chaque nouvelle lib sur reactnative.directory pour le support iOS (déjà le réflexe, ch. 1.4). (4) Un eas build --platform ios --profile preview d’ESSAI pour valider que ça compile (le quota le permet). (5) Documenter les 3 vérifs visuelles en attente dans le README. Le portage devient une après-midi le jour J, pas une expédition.

🧠 Quiz

1. Peut-on builder pour iOS sans Mac, et que manque-t-il alors ?

Réponse

Oui — EAS Build compile l’IPA dans le cloud depuis n’importe quel OS. Ce qui manque sans Mac/iPhone : tester (simulateur = Mac ; le minimum viable = un iPhone + TestFlight).

2. Quel est l’équivalent iOS du keystore, et qui le gère ?

Réponse

Les certificats de distribution + provisioning profiles (renouvellements annuels compris) — générés et gérés par EAS, comme le keystore Android.

3. TestFlight vs le test fermé Google : la différence clé ?

Réponse

TestFlight est libre (pas de quota 12×14 j imposé, jusqu’à 10 000 testeurs par lien, review bêta légère) — la contrainte Apple est ailleurs : 99 $/an et la review App Store plus opiniâtre.

4. Un eas update touche-t-il les deux plateformes ?

Réponse

Oui — le channel sert Android ET iOS : une OTA met à jour le JS des deux parcs d’un seul geste (runtimeVersion par plateforme respectée).

5. Formulez la doctrine du cours sur iOS.

Réponse

Cross-platform dans le code (gratuit, discipliné depuis le jour 1), mono-plateforme dans l’opération — porter le jour où l’app justifie le loyer récurrent (99 $/an, reviews, matériel de test), pas avant.


👉 Chapitre suivant : 15.2 — Expo pour le web — la même app en site : la promesse et le verdict.