Vous avez surement entendu parler de React Native, vous vous demandez si c’est un bon choix pour développer votre application mobile ? Nous l’avons testé pour vous.
Dans cet article nous vous montrerons les Forces, Faiblesses, Opportunités et Menaces (SWOT) de chaque technologie. Mais avant tout quelques petites définitions :
Qu’est-ce que ReactNative ?
React Native est un framework d’applications mobiles open source créé par Facebook qui a vu le jour en 2015. Il permet aux développeurs de générer du code iOS et Android depuis un seul et même code maitre.
Pour en savoir plus sur la différence entre l'hybride et le natif, vous pouvez consulter notre article : Application mobile hybride ou native : que choisir ?
Qu’est-ce que le développement natif ?
Un développement en natif implique deux codes indépendants : un pour iOS et un pour Android. Chacun étant écrit dans un langage dédié nativement pour l’OS (Système d’Exploitation) correspondant.
iOS
Objective-C
C’est le langage historique pour développer sur iOS en natif. C’est un langage qui existe depuis bien avant la sortie du premier iPhone en 2007 puisque la première version de ce langage date de 1983.
Swift
En 2014, Apple lance la première version de son langage de programmation qui a connu une forte adoption du fait qu’il est plus simple qu’Objective-C. Aujourd’hui les développements natifs en iOS se font pour leur grande majorité en Swift.
Android
Java
Java est un langage de programmation qui existe depuis 1995. Il appartient à Oracle qui en 2012 annonce vouloir le mettre à disposition du développement des logiciels embarqués. C’est alors le principal langage de programmation utilisé pour développer des applications mobile Android.
Kotlin
Kotlin existe depuis 2011 mais c’est en 2017 que Google annonce lors de sa conférence Google I/O supporter ce langage pour les Applications Android. Ce langage reçoit alors une forte adoption. Découvrez les 8 raisons pour lesquelles nous croyons en Kotlin pour développer les applications Android natives.
React Native
Forces
Technologiques
- Mutualisation du code partagé entre le site web et les applications qui délivrent les mêmes fonctionnalités
Ressources Humaines
- Il y a une communauté impliquée et réactive
- Une seule et même équipe qui travaille sur le même code régissant iOS et Android
Cout et Temps
- Réduit par rapport au développement natif sur une application ayant un niveau de complexité bas. Plus la complexité est forte, moins le cout et le temps sont une force
Faiblesses
Technologique
- Maintenabilité : au-delà d’un certain niveau de complexité, la maintenabilité devient très compliquée
- Effectuer des « bridges » : il est nécessaire d’avoir la possibilité d’effectuer des bridges avec le développement natif pour développer certaines fonctionnalités qui ne sont pas supportées par React Native
Innovation
- Latence : Il est nécessaire d’attendre que les nouvelles fonctionnalités soient adaptées à React Native par Facebook où la communauté
- Autonomie : React Native n’est pas toujours autonome dans les dernières innovations (chatbot, réalité augmentée, objets connectés, solutions de paiement) car soit les tiers ne sont pas compatibles, soit du développement natif supplémentaire est nécessaire
Menaces
Ressources Humaines
- Il y a beaucoup de développeurs Javascript mais très peu qui maitrisent réellement React Native. Le manque est d’autant plus fort en ce qui concerne des développeurs React Native qualifiés qui sont capables de gérer une App sous React Native avec un haut niveau de complexité
Dépendances
- Apple est réticent aux applications codées en langage hybride
Gérer la complexité
- Le niveau de maturité sur cette technologie est bas et cela est dangereux. D’autres technologies dans cette situation ont généré par le passé des problèmes aux entreprises qui avaient décidé d’investir dedans (HTML5, Flash, Cordova…)
- Airbnb a laissé React Native car il ne supportait pas la complexité. Certaines fonctionnalités nécessitaient un développement natif (Swift et Kotlin) ce qui fait que 3 technologies s’accumulaient
Opportunités
Innovation
- Développer des prototypes plus rapidement
Vous cherchez plus d'informations sur React Native ? Rendez-vous sur notre article : React Native : avantages et inconvénients
Développement Natif
Forces
Technologiques
- Gérer un haut niveau de complexité et maintenir une Application complexe
- Langage officiel supporté par Apple et Google
- Performances (processing power)
Ressources Humaines
- Il y a une grande communauté, impliquée et réactive
- Les technologies sont matures et les expertises très solides
Expérience utilisateur
- L’expérience délivrée est aux plus hauts standards industriels
Faiblesses
Technologiques
- Deux codes différents à développer et maintenir
Ressources Humaines
- Deux équipes de développement sont nécessaires
Cout
- Le cout est plus élevé sauf s’il s’agit d’une Application ayant un haut degré de complexité
Menaces
Ressources Humaines
- Il est difficile de trouver des développeurs natifs qualifiés
Opportunités
Image de marque
- Respecter les guidelines des systèmes d’exploitation assure une meilleure création de valeur notamment sur l’activation, la rétention, la génération de revenus et les recommandations
- Être mis en avant sur l’App Store et le Google Play Store, et ainsi booster son acquisition
Innovation
- La possibilité d’implémenter de nouvelles fonctionnalités innovantes plus rapidement (chatbot, réalité augmentée, objects connectés, NFC, solutions de paiement…)
Pour en savoir plus sur le développement natif, consultez notre article : Application Mobile Native : avantages et inconvénients
Conclusion
Si vous cherchez à mettre rapidement en ligne un prototype afin de valider un concept, React Native est le plus adapté.
Si vous souhaitez développer une Application robuste et pérenne qui va gagner en complexité en évoluant nous vous conseillons de développer votre Application en natif.
Si vous avez besoin de plus d’information écrivez à un conseiller digital Kreactive.