React Native vs. Développement Natif : Que choisir pour son application mobile?

banniere-article

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.

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 dedié 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 soit plus simple qu’Objective-C. Aujourd’hui les développements natif 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 dela 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, objects 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

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 au 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 natif 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…)

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.