Qu’est-ce qu’Expo ?
Expo est un outil open-source de développement mobile permettant de développer des applications iOS, Android et web. Il fonctionne en React Native et JavaScript, ce qui nous permet de développer un seul code source qui sera fonctionnel sur plusieurs plateformes. Nous avons déjà eu l’occasion de l’utiliser lors du projet Hop Ma Liste pour le CHU d’Angers.
Expo nous permet de simplifier grandement la conception, et ce à plusieurs stades du projet :
- Il gère le build pour rendre les déploiements plus efficaces. Dans le cas de Hop Ma Liste, nous avons récupéré les packages générés automatiquement pour les intégrer directement sur le Google Play Store et sur l’Apple Store.
- Il permet de tester facilement l’application, à tout moment du développement, grâce à Expo Go. Lors de la phase de conception nous utilisons un émulateur pour voir l’évolution de l’application, cependant certaines fonctionnalités n’ont pas le même comportement sur un émulateur et sur un téléphone « physique ». Nous installons donc Expo Go, qui est une application mobile permettant de scanner le QR Code de l’application et pouvoir la tester sur mobile. Cela nous fait gagner énormément de temps car ce test s’effectue en quelques minutes, là où normalement nous devrions effectuer un déploiement sur les stores qui peut prendre beaucoup de temps, ou un export apk plus fastidieux…
- Il dispose d’évolutions régulières permettant à cette solution de rester à la page et de proposer de nouvelles fonctionnalités et des mises à jour régulières. Une des dernières mises à jour est la prise en charge de TypeScript, ce qui nous permet d’améliorer la productivité et la maintenabilité de notre code.
- Expo permet aussi d’utiliser un certain nombre d’outils et de fonctionnalités intégrées, comme un éditeur de code ou un ensemble de composant pour aider à la conceptions des interfaces.
- De plus, Expo possède une communauté très active permettant d’avoir accès à de l’assistance et des conseils en ligne, mais aussi d’utiliser des packages et modules créés par d’autres développeurs, puis rendus accessibles à tous.
Tous ces avantages permettent de se concentrer sur le développement de l’application, plutôt que sur les tâches répétitives.
Quelle alternative à Expo ?
Aujourd’hui il existe plusieurs concurrents à Expo, le plus important étant Flutter. Il s’agit d’un framework permettant de créer des application iOS, Android, Linux, Mac, Windows, Google Fuchsia et web. Cependant les 2 solutions disposent d’avantages et d’inconvénients distincts :
- Flutter utilise le Dart, tandis que qu’Expo utilise le JavaScript et le React Native. Dart est un langage moderne et facile à prendre en main. Là où le JavaScript est plus ancien mais avec une communauté très active.
- Flutter possède un moteur de rendu personnalisé lui permettant de disposer de performances rapides. Expo de son côté utilise le framework React Native, qui est moins performant, mais plus facile à apprendre et à utiliser.
- Flutter propose une grande flexibilité et une personnalisation très poussée, mais cela nécessite plus de travail pour créer des interfaces spécifiques. Expo dispose d’un panel de composant prêt à l’emploi permettant de créer des interfaces plus rapidement, mais pouvant être un peu limité en termes de personnalisation.
- Nous avons déjà abordé les avantages d’Expo par rapport au déploiement, alors que Flutter nécessite plus de manipulations.
- Flutter dispose d’une communauté en croissance rapide avec des mises à jour régulières et une documentation complète. Là où Expo a une communauté plus grande et plus établie avec de l’aide et des supports actifs pour les développeurs.
Au vu de la situation actuelle et des différents points précédents, Flutter reste une solution à surveiller en fonction de son évolution. Cependant dans notre cas, et dans le cadre de projet comme Hop Ma Liste, il est plus intéressant d’utiliser Expo étant données nos compétences et les possibilités apportées par l’outil.