Guide pratique du développeur mobile React Native
Lorsqu’il m’a fallu démarrer le développement d’une application mobile en React Native il y a quelques années, j’ai été confronté, comme bon nombre de développeurs au manque criant de littérature sur le sujet. Par « littérature », j’entends un document qui synthétise les différentes étapes du développement d’un projet mobile en RN en y apportant des réponses concrètes.
Comment structurer un projet React Native ? Quel typage (aucun ? typescript ? Flow) ? Comment choisir le bon outil de navigation et quels sont les pièges à éviter ? Comment gérer l’état ? Quid de la sécurité, des notifications Android et iOS, l’identification unique de périphérique, le Deeplinking, le monitoring, le tracking, le déploiement sur les stores ? Quid du versioning ?
Si on trouve aujourd’hui plusieurs générateurs d’applications React Native on oublie souvent de préciser que sans une connaissance préalable de l’écosystème React Native, utiliser ces générateurs sans comprendre la nature des outils configurés peut conduire à une impasse. Il m’a fallu quelques années d’expérience, plusieurs applications, quelques déconvenues aussi, pour trouver des fondations solides d’une application mobile. Dossardeur en est le fruit.
Il m’a semblé que rédiger un document retraçant cette expérience personnelle avait probablement un sens. Ce guide, loin d’être exhaustif, est un point d’entrée vers les outils qui vous permettront de mettre en oeuvre les bonnes pratiques que j’ai acquises au fil des projets. Vous aurez parfois le choix entre un outil et un autre mais je tenterai systématiquement de vous fournir l’argumentaire associé. Evidemment, comme partout, il existe des guerres de chapelles entre partisans d’outils avec des finalités communes. Je ne prétends pas à l’objectivité, comme tout développeur, j’ai des goûts et des préférences. Notez également qu’une bonne connaissance du Framework React vous sera nécessaire.
Voici les différents sujets traités par ce document :
- Définir son langage cible et un typage (Aucun, Flow, TypeScript, ….)
- Structurer son projet React Native (Scaffolding, …)
- Mettre en place des configurations d’environnement (dev, test, prod)
- Gérer l’état d’une application React (Redux, MobX, …)
- La navigation (React Navigation, React Router, React Native Router, …)
- Bibliothèques de composants graphiques
- Monitoring technique et métier
- Crashlytics, Firebase, Logs, Tracking
- Les notifications – Firebase GCM/FCM Batch APNS (en cours de rédaction)
- La sécurité et l’authentification cliente (OAuth, OpenId, JWT, ….) (en cours de rédaction)
- L’identification unique de périphérique (en cours de rédaction)
- IDFA vs IDFV vs UDID vs Android ID
- Deeplinking (en cours de rédaction)
- Construire un SDK avec une API (en cours de rédaction)
- Swagger et Open API => Axios, Fetch
- Déploiement sur les stores IOS et Android (en cours de rédaction)
Sami Jaber
DNG Consulting