Il y a encore 5 ans, si vous souhaitiez développer une application mobile, vous étiez confronté au problème de ne pouvoir développer votre application iOS et Android en même temps. Quelle application alliez vous privilégier ? Comme vous assurer de l'homogénéité entre les deux ?
En 2019, il existe de nombreux frameworks qui permettent de développer une application multiplateforme (ou cross-platform) avec une base de code unique. Les deux frameworks actuellement les plus utilisés sont Ionic et React-native, conçus respectivement par Google et Facebook. Si ceux-ci ont le même objectif, ils n'ont pas la même approche.
Sorti en 2013, Ionic a été conçu à l'origine avec les technologies Apache Cordova et Angular. Cette plateforme permet de développer des applications hybrides à l'aide de HTML, CSS et JavaScript avec une base de code unique et réutilisable.
Au fur et à mesure de son développement, Ionic s'est enrichi de composants et de fonctionnalités UI qui vous permettent de construire de belles applications. Attention toutefois, vous aurez besoin de Cordova et de PhoneGap pour que Ionic fonctionne.
La prise en main de Ionic vous sera d'autant plus aisée si vous connaissez déjà Angular.
Le framework comporte un certain nombre de composants pré-développés pour l'interface utilisateur. En conséquence, cela peut considérablement simplifier votre travail. "Écrivez un code une fois et lancez-le sur toutes les plateformes."
Ionic fournit beaucoup de plug-ins bon marché qui vous permettent d'oublier l'utilisation de solutions tierces. De plus, vous pouvez toujours aller regarder les plugins de Cordova si vous ne trouvez pas ce que vous voulez.
Ionic est basé sur des technologies populaires telles que Angular, CSS, HTLM, permettant d'être utilisé rapidement par les développeurs.
Ce framework fournit de nombreux composants et plugins. Il est également possible d'utiliser un kit de développement d'applications riche en fonctionnalités : bibliothèque de blocs front-end, des composants UI, plugins vous permettant d'accès à l'appareil photo, etc/t
Une bibliothèque propose des composants qui agissent et ressemblent à des éléments natifs de toutes les plates-formes prises en charge. De plus, il existe un kit de développement d'applications complet: une riche bibliothèque de blocs de construction frontaux, des composants d'interface utilisateur, des centaines d'icônes d'applications les plus courantes. Les plugins nous donnent accès à des fonctions téléphoniques, telles que Bluetooth, GPS ou appareil photo.
Ces différents avantages permettent de créer une application à moindre coût. D'une part, les technologies utilisées sous Ionic sont très connues. D'autre part, vous économisez du temps de développement puisque vous développez un code unique pour plusieurs plateformes.
Les apps développées avec Ionic peuvent avoir des performances réduites par rapport aux apps natives, en particulier pour les apps qui demandent de nombreuses fonctions de rappel (ou « callbacks ») vers le code natif.
De plus, le développement de features nécessitant de nombreuses transitions graphiques ou intéractives avancées peuvent être compliquées à développer.
Enfin, Ionic demande de bonnes connaissances de la librairie RxJS (qui a pour but de faciliter la gestion des évènements asynchrones) ce qui peut ralentir la vitesse de développement si vous ne les maîtrisez pas.
Ce framework a été créé par Facebook en 2015, en appliquant l'architecture React aux applications natives iOS et Android.
Il possède une fonctionnalité intéressante qui permet de créer des applications multi plateformes, difficiles à distinguer des applications natives. Cela revient à taper une phrase dans Google Translate qui vous donne automatiquement une traduction. En termes simples, le processus est le même : vous écrivez un code dans les composants React. Par la suite, ce code sera rendu sous forme de composants d'interface utilisateur natifs dans votre application mobile. WebView et les navigateurs n'étant pas utilisés, vos applications pourront fonctionner plus rapidement.
React Native est basé sur JavaScript, ce qui offre de larges possibilités aux développeurs de partager leur code sur des plateformes différentes. Attention, toutefois, ne vous attendez pas à utiliser une seule barre d'outils pour plusieurs plateforme. Au contraire, vous allez utiliser des composants au plus proche du comportement natif de la plateforme ! De plus, vous ne pourrez pas vous dire que vous pourrez utiliser React Native partout. Vous devrez dans certains cas modifier un code spécifique à iOS ou Android si vous souhaitez avoir une apparence 100% native.
La principale force de React Native est le temps de développement court. Le framework fournit de nombreux composants prêts à l'emploi qui peuvent accélérer la sortie de votre application. Même si React Native n'a pas toujours la solution que vous souhaitez intégrer, vous pouvez la construire rapidement "from scratch" puisqu'il est basé sur JavaScript, le langage le plus populaire dans le monde et dispose ainsi de nombreux composants déjà existants et une communauté très large prête à vous aider.
Un autre gros avantage de React Native provient de sa capacité à pouvoir réutiliser son code base sur iOS et Android. Selon la complexité de votre application et du nombre de modules natifs que vous utilisez, il est possible de développer à 100% en cross-platform.
En étant développé en Javascript, le framework vous donne la possibilité de partager le codebase entre les plateformes mobiles et les applications en React web
React Native permet également aux développeurs de faire fonctionner l'application tout en implémentant de nouvelles versions et en peaufinant l'interface utilisateur gràce au concept de Hot Reloading. Cela rend les modifications visibles instantanément sans que le développeur ait besoin de compiler à nouveau l'application. Fini les pertes de temps à compiler et perdre le statut de l'application lors des modifications réalisées, ce qui raccourcir toujours plus le temps de développement.
En termes de coûts, développer une application sous React Native est mois cher que de développer à la fois sous iOS et Android. En effet, vous aurez essentiellement besoin de développeurs en JS.
Beaucoup de développeurs étaient sceptiques sur les performances d'une application en React Native par rapport à une app en natif. Il n'en est rien. Les différences de rapidité ou de performance sont minimes ou nulles.
Même si React Native est utilisé par de nombreux acteurs (Instagram, Twitter, etc.), ce framework est toujours en phase bêta, ce qui signifie qu'il y a souvent des changements de versions pour lesquels la migration n'est pas immédiate, et certaines fonctionnalités sont encore instables. Ainsi, les développeurs React Native font parfois face à des problèmes liés aux outils de débugs par exemple.
De plus, React Native manque encore de certains composants, en particulier personnalisables. Rassurez-vous, la plupart des modules personnalisés dont vous aurez besoin sont disponibles et très bien documentés.
S'agissant des technologies à maîtriser, vos développeurs devront quelques connaissances spécifiques à iOS et Android. En effet, certaines fonctionnalités et modules natifs ne sont pas pris en charge (ex : push notifs, appareil photo, etc.). A noter toutefois que la communauté propose de plus en plus de bibliothèques en open source qui vous permettent d'intégrer ces fonctionnalités natives. Néanmoins, la mise en ?uvre de fonctionnalités plus avancées peut nécessiter encore l'aide des développeurs iOS et Android.
Les frameworks multi-plateformes sont devenus incontournables avec la multiplicité des modèles de téléphones et des versions des système d'exploitation iOS et Android. Si Ionic et React-Native sont les deux frameworks les plus populaires ; React-Native attire un nombre croissant de nouvelles applications. Les applications les plus populaires Facebook, Uber, Amazon et Netflix ont choisi ce framework. Chez BAM, nous avons expérimenté à la fois Ionic et React-Native. Finalement, c'est sur ce dernier que nous avons choisi de développer des applications pour nos clients. Les avantages proposés par React-Native sont nombreux : des performances comparables aux applications natives, un temps de développement plus court, une expérience utilisateur fluide et une possibilité de partager le codebase entre les plateformes mobiles et les applications en React web. Tout pour vous fournir un MVP en un temps record ou optimiser une application déjà existante que vous soyez une startup, une PME ou une grand entreprise.
Si vous souhaitez en savoir plus sur React Native, n'hésitez pas à lire notre Tech Radar !