Retour d'expérience sur Flutter

Aujourd'hui, j'avais envie de revenir sur mon expérience avec Flutter. Après plus de 10 ans de dev back et front sans toucher au dev mobile, j'ai eu l'opportunité de travailler sur un projet mobile.
Tout d'abord, un peu de contexte.
Avec Jean-Baptiste Sagot et Valentin Tabary, nous avons eu envie de créer un projet autour de l'IA. Après plusieurs idées et un bootcamp mémorable, émerge l'idée d'aider les parents à renouer avec la lecture du soir à leur enfants, en leur permettant de raconter des histoires de manière immersive et personnalisée. C'est ainsi que TaleMe est né.
En pensant à l'usage, nous nous sommes vite rendu compte que l'application devait être mobile. En effet, quoi de mieux que de raconter une histoire au pied du lit de son enfant ou dans le canapé du salon. L'expérience utilisateur devait être optimale et pour cela, il était crucial d'avoir une application mobile plutôt qu'une webapp.
Revenons maintenant à Flutter.
Qu'est-ce que Flutter ?
Flutter est SDK/framework créé par Google pour produire des applications multi-plateformes. Vous pouvez déployer sur web, desktop et mobile, rien que ça !
Pour développer avec Flutter, nous devons utiliser Dart, un langage de programmation créé par Google. L’un des buts premier du langage était d’offrir une alternative à JavaScript, mais ça n’a pas du tout pris auprès de la communauté. Finalement, le langage s’est plutôt orienté sur ses capacités à être compilé vers plusieurs supports (En vrai, c’est clairement porté à bout de bras par Flutter :D ). Si vous connaissez des langages typés comme TypeScript ou Java, vous devriez être à la maison. Et comment ça se traduit, dans le code ? Eh bien, nous allons avoir à notre disposition des composants (appelés widget) qui vont s'imbriquer en cascade. ( comme sur React )
Bon le plus important à retenir, c'est qu'on rapproche des vraies applications mobiles natives, fluides et performantes.
Le premier date
La première impression est importante, et avec Flutter, ça a été le coup de foudre. (pardon)
Plus sérieusement, la doc, l'écosystème, la communauté, tout ces indicateurs sont important avant de se lancer dans le dev d'un projet, même si c'est un PoC.
Dans le paysage, on voit principalement react-native et kotlin multiplatform. Ma réflexion a été la suivante :
- React-native, c'est bien, je connais déjà une partie du tooling et des concepts. Mais comme ça se base sur JS, flemme de me taper 100 alternatives de packages pour faire la même p* de chose. J'ai pas envie de changer de lib tout les 4 matins.
- Kotlin multiplatform, prometteur, mais un peu trop jeune et pas assez de recul. Kotlin m’inspire moins que Dart, affaire de goût.
- Flutter, c'est le bon compromis. C'est un framework qui a fait ses preuves, utilisé par pas mal de boites sérieuses (si on se fit aux démonstrations sur le site) et c'est plutôt mature. Même si la communauté est beaucoup plus petite que celle de JS, elle reste très active. (on a eu la flutter conf 2024 il y a quelques jours )
Quelques points fort en vrac :
- La doc est très bien faite.
- L’installation de flutter et du tooling mobile est limpide ( configuration de xcode/android studio, les émulateurs, l’inspecteur …. )
- un besoin = un package 🙏
- Le hot reload, c'est la vie. C'est un gain de temps incroyable. Vous faites une modif, vous appuyez sur r ou maj-r et hop, c'est pris en compte. C'est un vrai bonheur.
- Le système de composants (widget) se prend en main instantanément si vous avez déjà travaillé avec React.
- Des performances natives, on compile des vraies applis natives ( Flutter apps are compiled directly to machine code, whether Intel x64 or ARM instructions)
Achievement
Comme énoncé plus haut, mon expérience en développement mobile natif, c'est 0.
Quels outils utiliser ? Comment build une app ? Comment la deployer sur les stores ? Comment gérer les versions ? Les mises à jour ? les crashs ? les analytics ? les tests ? gestion des différents environnements ? les notifications ? les permissions ? les achats in-app et les subscriptions ? ... Bref, j'avais tout à apprendre.
J'ai mis 4 semaines pour déployer une première version de l'app (temps de validation compris) et 1 mois supplémentaire pour ajouter les fonctionnalités comme les notifications, achats in-app, et subscriptions.
L'idée ici n'est pas de juger mes compétences, mais de montrer que Flutter est un framework qui se prend rapidement en main, avec un chemin suffisamment balisé pour qu'on puisse se concentrer sur le plus important : livrer une app fonctionnelle et qualitative, rapidement et simplement.
Si ce retour d'expérience vous a intéressé, j'ai plusieurs choses à vous proposer :
- Tester TaleMe et me faire un retour sur vos impressions https://talemeapp.com ;
- Laissez un commentaire sur le store pour nous aider à nous faire connaître ;
- Laisser un commentaire sur ce post ;
N'hésitez pas à me suivre si vous êtes intéressé pour en apprendre d'avantage sur Flutter et notre parcours chez TaleMe.