Constance
Le 28 juin 2018
Constance

Application mobile : Native ou React Native ?

Comme toujours avec les innovations numériques, un panel de possibilités s’offrent à vous, notamment pour créer votre application mobile. Certes, votre site est responsive, mais si vous souhaitez enrichir l’expérience de vos utilisateurs sur smartphone, rien de tel qu’une application mobile. Aujourd’hui on vous explique deux technologies pour vous lancer dans la création d’une application mobile : l’application Native et l’application React Native.

Application mobile : Native ou React Native ?

Application Native, application React Native, de quoi parlons-nous ? 

Swift & Kotlin

Swift (1), c’est le nouveau langage de programmation iOS qui a tendance à remplacer l’Objective-C. Apple a conçu le Swift pour donner plus de liberté aux développeurs. Bien plus facile à utiliser que l’Objective-C, il est possible de créer des applications inédites sur les différents supports d’Apple : Iphone, Ipad, Apple Watch, Mac. 

Kotlin (2), substitut du Java, est devenu le langage officiel pour Android. La performance de ce langage réside dans la facilité, la rapidité et la sécurité de son utilisation. Tout comme le Swift, ce langage permet aux développeurs de bénéficier de plus d’autonomie et plus de créativité pour coder des applications mobiles. 

React Native

Pour bien comprendre le concept, il faut décomposer ce langage en deux parties (comme son nom) :

  • React (3) : React est un framework pour le langage de programmation JavaScript 

Habituellement, les applications web suivent des directives de template ou du format HTML. Il y a donc d’abord un contenant avant d’avoir du contenu. Or, l’atout de React c’est de casser ce contenant en composants, au lieu d’avoir une interface globale.  En quoi est-ce un atout ? 

La possibilité de les réutiliser à l’infini même si le contenu change. Par exemple, les avatars, les cards ou les call-to-action sont des composants que les développeurs vont utiliser dans 90% des pages de votre site.  

  • Native : reprise des composants natifs iOS et Android

Par native, il faut comprendre les composants natifs pour les bibliothèques iOS et Android. Par exemple, la reprise du design des boutons natifs ou encore, le scroll propre au mobile. 


Quelles différences entre Native et React Native ? 

Le langage de programmation

Quelle surprise ! En effet, comme vous l’avez compris ci-dessus, le langage privilégié pour iOS c’est le Swift, pour Android c’est Kotlin. Et entre les deux, il y a React Native, un mélange subtile de JavaScript et de librairies natives.

L’adaptabilité

Que ce soit pour iOS, ou pour Android, il faudra spécifier si vous souhaitez le format mobile, le format tablette ou les deux. En effet, les deux types de supports demandent donc des développements spécifiques, alors que l’atout d’une application React Native c’est qu’elle s’applique aussi bien sur la tablette ou que sur le mobile

L’expérience utilisateur

Tout dépend de ce que vous souhaitez pour votre application mobile. 

Une expérience utilisateur enrichie par des animations et l’utilisation de composants propres au téléphone (du type appareil photo) demandera un développement natif. C’est le choix de l’application La Matinale du Monde, qui joue sur les animations et une navigation moderne.  

Les objets connectés 

Si vous souhaitez créer un projet avec des objets connectés, le natif sera fortement conseillé. En effet, le Bluetooth, technologie utilisée pour relier votre téléphone à l'objet connecté, est un composant du téléphone. 

Par exemple, nous avons accompagné Drumistic(4) pour le lancement de son application mobile : Senstroke. Il s’agit d’un outil (bientôt disponible sur l’App Store) créé par des batteurs pour les batteurs. Muni(e) de baguettes connectées, entraînez vous à la batterie n’importe où ! 

Pour accompagner ce projet, nous avons choisi de faire une application native pour deux raisons : 

  1. La performance : entre l’impact et le son, il se passe 60 millisecondes (l’objectif est d’atteindre les 40 millisecondes). La bibliothèque utilisée, Superpowered, n’est disponible que pour le Swift ; de plus, c’est grâce au Swift qu’on atteint des temps de réponses aussi bas, ce qui ne serait pas possible à l’heure actuelle avec du React Native. 
  2. Les baguettes connectées qui fonctionnent avec le bluetooth

Réalité augmentée 

Aujourd’hui, le monde mobile propose de plus en plus de services associés à la réalité augmentée ;  la superposition d’images numériques au monde réel comme le font les applications telles que Snapchat ou Pokemon Go n’est possible qu’avec des applications natives. 

A savoir

Il faut savoir qu’il est possible de mixer les trois technologies : React Native, Swift, et Kotlin. En effet, en fonction des fonctionnalités à développer, il est possible de mélanger les trois langages de programmation. On vous en dit un peu plus dans les études de cas. 

Etudes de cas


Airbnb (8)

Alors que Airbnb s’était lancé en React Native, l’entreprise a décidé de se relancer dans des développements 100% natifs pour les prochaines versions de leur application. 

En effet, ils se sont aperçus que React Native ne suffisait pas pour atteindre leurs objectifs :

  • améliorer la vélocité de l’équipe : échec. En effet, suite à de nombreux problèmes techniques et organisationnels, les équipes ont connu des sentiments de frustrations et les délais de livraison n’ont pas été respecté ;
  • maintenir la qualité de l’application : échec. Même si beaucoup de fonctionnalités sont possibles, et malgré une expertise grandissante au sein des équipes de développement, certains challenges techniques n’ont pu aboutir. 
  • écrire un langage plutôt que deux : échec. En effet, même si l’objectif était de créer une même application pour les deux systèmes d’OS, les développeurs ont dû utiliser du Kotlin et du Swift au regard des fonctionnalités demandées. Au lieu d’être sur un seul langage, l’application était à la fois sur du JavaScript, du Swift et du Kotlin. 

C’est pourquoi Airbnb se lance progressivement dans une refonte complète de leur application mobile, pour qu’elle soit totalement native. 


Facebook Ads Manager (6)

Pour ceux et celles qui ne connaitraient pas, Facebook Ads Manager est un outil de gestion de pages Facebook pour les webmarketeurs, et plus particulièrement pour les community manager. Cette application est la première de Facebook à être réalisée totalement en React Native. Pourquoi ? (7)

  • L’application web regorge de règles métiers complexes (fuseaux horaires, paiement, conversion de devise, formats de dates…), qui sont représentées en JavaScript. Au lieu de perdre du temps à coder en deux langages différents (Swift / Kotlin), Facebook a pu reprendre cette base, au lieu de la réécrire ; gain de temps assuré ! 
  • Possibilité de créer facilement des composants réutilisables pour les listes, les détails, les tableaux ou les graphiques. 
  • Livraison en continue : au lieu de recompiler l’application et la publier sur les stores, les changements se font instantanément. 

Conclusion

En fonction de vos problématiques et de la solution imaginée, comme vous l’aurez compris, vous pouvez partir sur du React Native comme sur du Native. C’est pourquoi chez Tymate, nous rendons systématique la phase de conception du Product Design Sprint afin de trouver la solution la mieux adaptée à vos besoins. 


Sources 

(1) https://www.apple.com/fr/swift/ 

(2) https://developer.android.com/kotlin/

(3) https://reactjs.org/blog/2013/06/05/why-react.html 

(4) https://www.drumistic.com/fr/ 

(5) https://instagram-engineering.com/react-native-at-instagram-dd828a9a90c7 

(6) https://facebook.github.io/react-native/ 

(7) https://code.facebook.com/posts/1189117404435352/react-native-for-android-how-we-built-the-first-cross-platform-react-native-app/ 

(8) https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a