Du Multiplateforme au Multidevice : BAM s'ouvre au delà de ReactNative

Business

React Native

kotlin

flutter

bam

swift

Le mobile évolue, BAM aussi.

Nos clients sont de plus en plus confrontés à la nécessité de développer des apps compatibles avec l'ensemble des devices et les parcours complets imaginés pour leurs utilisateurs.

En complément de notre expertise historique en ReactNative, nous avons donc lancé en 2021 une Tribe Native (@ThomasPucci) et une Tribe Flutter (@GuillaumeDM).


Retour sur nos réfléxions et les constats qui nous ont poussés dans cette direction.

03_app installée en 30 min_1

ReactNative : un positionnement historique et avant-gardiste chez BAM

En 2014, Baptiste et moi avons fait un constat : le monde du mobile avait besoin d'une entreprise experte dans le multiplateforme. Diverses entreprises, souvent frustrées par le double coût du développement mobile, cherchaient sans cesse une solution pour coder leurs applications en une seule fois. À cette époque-là, aucune solution n'était satisfaisante et elles nécessitaient un niveau de maitrise élevée pour arriver à des résultats corrects. Nous avons donc lancé BAM sur cette vision : acquérir une expertise et des créer des méthodes de travail qui permettent de faire du multiplateforme une solution viable pour nos clients.

Après plusieurs mois de veille technique intensive, une analyse approfondie de chaque technologie disponible sur le marché et des évolutions survenues en cours de route, nous avons choisi notre technologie de prédilection : ReactNative. En 2015, nous étions d'ailleurs parmi les premiers à y croire, y investir et en faire des projets.

L'essor du multiplateforme et l'évolution des technologies mobiles

Aujourd'hui, le paysage du mobile a beaucoup évolué par rapport à 2015 et nous prouve que notre pari était gagnant.

D'un côté, le multiplateforme a fait ses preuves: sur Android ReactNative, Flutter ou Cordova ont été intégrées dans plus de 100k applications, totalisant presque 50 milliards de téléchargements (source: AppBrain).

De l'autre, la vision multiplateforme du mobile a quand même été nuancée par une vision plus large. La majorité des produits ont aujourd'hui besoin de tourner dans un environnement mobile et desktop web. Les autres, sur les appareils connectés comme une voiture, une montre ou encore une SmartTV par exemple.

Une entreprise qui veut réussir sa stratégie numérique d'ici 2025, ne peut donc plus se permettre de faire des choix technologiques isolés, mais doit prendre en compte la totalité des modes d'interaction avec ses utilisateurs et choisir des solutions qui permettent de prendre de l'avance sur ses concurrents. Chez BAM nous avons plusieurs axes de développement potentiels :

  • garantir une expérience utilisateur sans compromis
  • un time to market réduit et une agilité dans le changement
  • une maîtrise des coûts pour faciliter la gestion projet

Alors quelle stratégie technique adopter dans ce contexte ? Trois voies se présentent à nous :

1. suivre la philosophie selon laquelle l'UI doit être gérée par chaque plateforme et se concentrer sur la réutilisation du business layer avec Kotlin Multiplatform

2. partir sur une nouvelle solution dédiée, entièrement repensée pour le monde du multidevice : Flutter

3. augmenter l'interopérabilité de ReactNative, un framework qui a déjà fait ses preuves dans le multiplateforme

BAM-TECH-28

1. Kotlin Multiplatform (Mobile)

Côté natif, l'introduction de Swift et Kotlin a changé beaucoup de choses. Les deux langages ont pris d'assaut leurs plateformes respectives : Swift étant déjà adopté par 90% des développeurs natifs iOS (source ) et Kotlin étant utilisé par 38% des nouvelles applications Android (source ). L'évolution des deux écosystèmes respectifs rend le fait de coder en natif plus facile et plus efficace, avec un code moins couteux à maintenir sur le long terme.

Chez BAM on vise surtout Kotlin Multiplateform Mobile. Mutualiser le maximum de code est crucial pour réussir à livrer rapidement les produits et gagner la course contre nos concurrents. La possibilité d'écrire la logique métier en Kotlin et la partager avec iOS permet de profiter de cette accélération en restant fidèle aux UI toolkits de chaque plateforme.

Ce choix a d'ailleurs des tradeoffs intéressants :

  • on diminue la dépendence aux frameworks 3rd-party et donc les risques de maintenance dans la durée
  • en restant proche du natif on ne subit aucune limite dans l'implémentation par rapport à ce qui est proposé par la plateforme, notamment côté expérience utilisateur
  • mais : par rapport aux autres solutions on diminue la réutilisation du code, donc on accepte un coût plus élevé et une gestion projet plus complexe
  • KMM reste aujourd'hui un choix surtout pour les applications mobiles, Kotlin/JS n'étant pas encore prêts à être déployés en production (alpha).

2. Flutter

En termes de solutions multiplateformes, Flutter a pris beaucoup de maturité et a conquis une partie importante du marché (3,7% en new apps selon AppBrain, 7,5% d'intention d'utilisation selon Batch.com) en apportant une alternative sérieuse à ReactNative.

D'un côté, son architecture est différente de ReactNative. Flutter mise sur Skia pour le rendu graphique. Cela permet de viser une performance graphique élevée et la possibilité de faire des interfaces innovantes en allant au-delà du smartphone.

De l'autre côté, le langage utilisé - Dart - séduit de plus en plus de développeurs mobiles grâce à sa double compilation qui lui permet d'allier performance d'exécution (AoT) et efficacité en développement (JiT).

Ces choix ne viennent pas sans contrepartie, la maintenance du framework étant complexe et Dart étant pour le moment un écosystème de niche.

Les tradeoffs dans cette solution sont finalement :

  • liberté pour créer des interfaces innovantes et performantes
  • réutilisation du code élevée entre toutes les plateformes supportes
  • mais : un risque sur la maintenance à long terme, dépendante d'investissement de Google
  • écosystème très jeune et réservoir des talents limité

Malgré les risques Flutter séduit de plus en plus d'acteurs, notamment ceux en recherche d'une interface innovante ou qui visent les plateformes au delà du mobile (ex. Toyota). Mais selon nous, l'argument ultime vient de Google avec les avancées sur le système Fuchsia. Cela signifierait qu'un projet développé en Flutter pourrait bientôt être déployé sur tout device Google. Ce qui serait une immense opportunité.

3. ReactNative

Le fait que BAM s'ouvre à de nouvelles technologies ne veut pas dire pour autant que l'on va laisser le ReactNative de côté. Il continue son évolution et réussit à maintenir une position forte sur le marché. La robustesse de l'écosystème et maturité de la plateforme font malgré tout aujourd'hui de lui un excellent choix pour :

  • démarrer rapidement un produit et itérer rapidement dessus
  • maintenir un produit coeur de métier avec une équipe restreinte qui écrit du code React côté mobile et côté web.

ReactNative montre beaucoup d'avantages types d'un framework mature. D'un côté la démarche "Lean Core" de ReactNative a construit une base solide pour des futures évolutions et un écosystème riche. De l'autre la communauté a déjà traité certaines questions très avancées : comment optimiser la performance, l'accessibilité, etc.

Le choix de ReactNative présente donc les opportunités suivantes selon nous :

  • un excellent time-to-market avec une solution qui résout beaucoup de problèmes out-of-the-box
  • facilité de maintenir une solution mobile et web avec la même codebase
  • mais : certaines limitations graphiques
  • pas de solutions robustes allant au delà du web et mobile pour l'instant

 

Quels nouveaux défis pour BAM ?

La compétition technologique s'inscrit dans un contexte où l'écosystème continue à évoluer vers une multitude de supports et devices : TV connectées, interfaces tactiles dans les voitures, smart speakers etc.

D'un côté, Google avance sur Fuchsia, en mettant la première version sur un Google Nest Hub et en créant des conditions pour que Flutter s'impose encore plus sur cette plateforme.

De l'autre côté, impossible de passer à côté des différentes annonces d'Apple : le développement continu de l'Apple TV, les avancées sur leur voiture électrique...

Tout cela entouré de nombreux autres acteurs qui sortent tous leur smart devices, leurs intégrations et leurs propres applications.

Pour réussir il est nécessaire de choisir une technologie qui permet de limiter au maximum la quantité du code à écrire et maintenir en maitrisant les tradeoffs qui viennent avec.

Ce besoin apporte beaucoup de complexité à gérer dans le domaine du multidevice et crée une nécessité de maitrise des outils encore plus ciblés et donc plus spécialisés.

C'est pour toutes ces raisons que nous avons décidé de développer de nouvelles expertises dans le développement natif et Flutter. Et nous sommes convaincus que cette démarche nous permettra de continuer à toujours proposer la meilleure solution à nos clients.