Skip to main content
Blog 7 min read

Guide Flutter PWA : DĂ©ployez vos Web Apps Rapidement 🚀

Découvrez comment créer et déployer une Progressive Web App (PWA) avec Flutter pour lancer vos applications sans passer par les stores.

F
Fabien Chung
Guide Flutter PWA : DĂ©ployez vos Web Apps Rapidement 🚀

Depuis longtemps, je me suis fixé comme défi de lancer des projets d'applications mobiles plus rapidement en réduisant les contraintes qui ralentissent habituellement le processus.

La premiĂšre contrainte Ă  surmonter Ă©tait le dĂ©veloppement pour plusieurs plateformes en mĂȘme temps. Flutter a rĂ©solu cela en me permettant de travailler sur une seule base de code pour crĂ©er des applications qui fonctionnent aussi bien sur iOS qu'Android, rĂ©duisant considĂ©rablement le temps de dĂ©veloppement.

Une fois le dĂ©veloppement terminĂ©, la deuxiĂšme contrainte qui survient est la publication sur les stores d'Apple et de Google. Ce processus exige l'achat d'une licence, l'envoi de l'application sur leurs serveurs, la prĂ©paration des Ă©lĂ©ments graphiques et des descriptions, puis l'attente d'une validation pour enfin ĂȘtre visible et tĂ©lĂ©chargeable par les utilisateurs. MĂȘme si les processus de vĂ©rification et de validation ont Ă©tĂ© rĂ©duits, cela n’empĂȘche pas tout un processus de dĂ©ploiement pour chaque mise Ă  jour de l’application.

Processus de publication d'une application mobile classique sur les storesProcessus de publication d'une application mobile classique sur les stores

Ces étapes deviennent particuliÚrement contraignantes lorsqu'on cherche à proposer rapidement une version testable et à itérer efficacement avec nos premiers utilisateurs. En additionnant le temps de développement, de diffusion et tous les facteurs externes liés au lancement comme la communication et le marketing, on voit rapidement s'accumuler les semaines, voire les mois, avant de toucher réellement son public cible.

Pourquoi créer une Progressive Web App (PWA) ?

La rĂ©ponse se trouve dans les PWA (Progressive Web Apps), une technologie qui existe depuis une bonne dizaine d'annĂ©es maintenant. Les PWA permettent d'accĂ©der Ă  une application directement depuis un navigateur web, sans passer par les stores. Des entreprises comme Facebook et Google l'ont pourtant largement adoptĂ©e. L'objectif est simple : offrir un accĂšs universel aux utilisateurs, quel que soit leur appareil. Une PWA, c’est essentiellement un site web qui ressemble et se comporte comme une application mobile.

Comment fonctionne une Progressive Web App (PWA) comparé à une application native avec Google MapsComment fonctionne une Progressive Web App (PWA) comparé à une application native avec Google Maps

Traditionnellement, le dĂ©veloppement de PWA nĂ©cessitait des compĂ©tences en dĂ©veloppement web. Les technologies habituellement utilisĂ©es Ă©taient React, Angular, ou d’autres frameworks comme Next.js ou Nuxt.js. En tant que spĂ©cialiste des plateformes mobiles, je n'avais donc jamais franchi le cap jusqu'Ă  rĂ©cemment. La constante Ă©volution de Flutter et sa communautĂ© active ont permis la prise en charge complĂšte du web (en plus d'iOS et d'Android) et donc par la mĂȘme occasion la possibilitĂ© de crĂ©er des PWA. Ce qui Ă©tait parfait pour moi qui maĂźtrise dĂ©jĂ  ce framework.

Développeur enthousiaste d'utiliser Flutter pour le webDéveloppeur enthousiaste d'utiliser Flutter pour le web

L'expérience utilisateur avec Flutter Web et PWA

Une PWA ne peut remplacer complĂštement une application native en termes d'expĂ©rience utilisateur. Cependant, une fois installĂ©e sur l'Ă©cran d'accueil, la barre d'adresse du navigateur disparaĂźt complĂštement et l'application offre une expĂ©rience bien plus immersive que la plupart des utilisateurs ne sauraient distinguer d’une app native.

Comparaison de l'installation et l'expérience d'une application native et d'une PWA FlutterComparaison de l'installation et l'expérience d'une application native et d'une PWA Flutter

Flutter Web nous permet de prĂ©server une grande partie de l'expĂ©rience visuelle et les animations restent gĂ©nĂ©ralement fluides grĂące aux widgets Material et Cupertino qui reproduisent fidĂšlement les designs caractĂ©ristiques d’iOS et d’Android.

Démonstration fluide d'une PWA Flutter depuis un navigateur webDémonstration fluide d'une PWA Flutter depuis un navigateur web

L'objectif ici n'est pas d'offrir l'expĂ©rience parfaite, mais plutĂŽt d'ĂȘtre disponible rapidement pour un maximum de personnes tout en proposant une expĂ©rience suffisamment proche pour satisfaire nos utilisateurs.

Contraintes techniques des PWA Flutter

L'environnement web impose certaines contraintes : le modÚle d'exécution via navigateur peut affecter les performances (couche d'abstraction), et l'accÚs aux fonctionnalités systÚme (caméra, localisation) reste plus limité qu'en natif.

Ces contraintes doivent ĂȘtre prises en compte dĂšs la conception, mais elles ne constituent pas un obstacle insurmontable pour la plupart des cas d'utilisation.

Comment compiler et déployer une PWA Flutter

Le code source Flutter (Dart) est compilĂ© et optimisĂ© vers JavaScript en arriĂšre-plan. Un script initialise ensuite l'environnement d'exĂ©cution Dart et charge l'application. Les images, polices et autres ressources sont optimisĂ©es et empaquetĂ©es pour ĂȘtre chargĂ©es efficacement dans le navigateur.

Tout cela se déroule en coulisses. Le développeur peut donc se concentrer sur le code qu'il maßtrise déjà ! Ensuite, pour rendre son application disponible, le déploiement se fait de maniÚre incroyablement simple :

  1. Renseigner le fichier manifest.json
json53 lines
1{ 2 "name": "LOVT", 3 "short_name": "LOVT", 4 "start_url": ".", 5 "display": "standalone", 6 "background_color": "#0175C2", 7 "theme_color": "#0175C2", 8 "description": "LOVT is the new app to find a job dedicated for youngs", 9 "orientation": "portrait-primary", 10 "prefer_related_applications": true, 11 "icons": [ 12 { 13 "src": "icons/Icon-192.png", 14 "sizes": "192x192", 15 "type": "image/png", 16 "purpose": "any" 17 }, 18 { 19 "src": "icons/Icon-512.png", 20 "sizes": "512x512", 21 "type": "image/png", 22 "purpose": "any" 23 }, 24 { 25 "src": "icons/Icon-maskable-192.png", 26 "sizes": "192x192", 27 "type": "image/png", 28 "purpose": "maskable" 29 }, 30 { 31 "src": "icons/Icon-maskable-512.png", 32 "sizes": "512x512", 33 "type": "image/png", 34 "purpose": "maskable" 35 } 36 ], 37 "screenshots": [ 38 { 39 "src": "/images/narrow.png", 40 "type": "image/png", 41 "sizes": "400x780", 42 "form_factor": "narrow", 43 "label": "Application" 44 }, 45 { 46 "src": "/images/wide.png", 47 "type": "image/png", 48 "sizes": "400x375", 49 "form_factor": "wide", 50 "label": "Application" 51 } 52 ] 53}
  1. Générer les fichiers web
bash1 lines
1flutter build web --release --web-renderer html
  1. Configurer le déploiement (Firebase Hosting)
json28 lines
1{ 2 "hosting": { 3 "public": "build/web", 4 "site": "lovt", 5 "ignore": [ 6 "firebase.json", 7 "**/.*", 8 "**/node_modules/**" 9 ], 10 "rewrites": [ 11 { 12 "source": "**", 13 "destination": "/index.html" 14 } 15 ], 16 "headers": [ 17 { 18 "source": "**", 19 "headers": [ 20 { 21 "key": "Cache-Control", 22 "value": "no-cache, no-store, must-revalidate" 23 } 24 ] 25 } 26 ] 27 } 28}
  1. Déployer
bash1 lines
1firebase deploy

Installation pratique d'une PWA Flutter sur l'écran d'accueil d'un smartphone AndroidInstallation pratique d'une PWA Flutter sur l'écran d'accueil d'un smartphone Android

Pas de soumission aux stores, pas d'attente d'approbation. Pour les mises Ă  jour, c’est encore plus simple : il suffit de redĂ©ployer les fichiers, et les utilisateurs auront la nouvelle version Ă  leur prochaine visite (ou au prochain rafraĂźchissement de la page).

Déploiement d'une PWA Flutter sur Firebase HostingDéploiement d'une PWA Flutter sur Firebase Hosting

Avantages et Inconvénients des PWA Flutter

L'approche PWA avec Flutter m'a permis de lancer l'application LOVT en un temps record (quelques semaines). Cette rapidité nous a offert un avantage stratégique : tester notre concept sur le marché réel sans investissement massif.

AprÚs plusieurs semaines d'utilisation en conditions réelles, voici une analyse détaillée :

Avantages

  • Cycle de dĂ©ploiement ultra-rapide : Mises Ă  jour en quelques minutes (ex: correction d'un bug d'inscription en 2h).
  • Économies financiĂšres : Pas de frais de licence ($99/an Apple) et Ă©conomie de ressources sur la prĂ©paration des soumissions. Cette lĂ©gĂšretĂ© se prolonge au niveau de l’infrastructure : grĂące Ă  notre architecture basĂ©e sur Firebase, nous n’avons, jusqu’à aujourd’hui, supportĂ© aucun coĂ»t d’hĂ©bergement ou de maintenance, optimisant ainsi notre budget de dĂ©veloppement et d’exploitation.

Steve Jobs annonçant zéro coût d'hébergement avec Firebase et PWASteve Jobs annonçant zéro coût d'hébergement avec Firebase et PWA

  • Distribution simplifiĂ©e : Partage via URL/QR code trĂšs efficace.
  • AccessibilitĂ© universelle : iOS et Android sans distinction.

Inconvénients

  • Absence des stores officiels : Dans un contexte de bouche-Ă -oreille, nous avons constatĂ© que de nouveaux utilisateurs cherchaient naturellement l’application sur l'App Store ou le Play Store avant de rĂ©aliser qu’elle n’était accessible que via le web. Cette situation a occasionnĂ© parfois une lĂ©gĂšre confusion. Nous estimons que cette absence des plateformes de distribution officielles reprĂ©sente une perte d’acquisition organique d’environ 15% par rapport Ă  une application traditionnelle.

Utilisateur confus cherchant la PWA Flutter sur l'App Store AppleUtilisateur confus cherchant la PWA Flutter sur l'App Store Apple

  • Friction Ă  l'installation : Nos statistiques dĂ©montrent que seuls 23% des utilisateurs rĂ©guliers ont vĂ©ritablement « installĂ© » l’application, les autres l’utilisant directement via leur navigateur.
  • Limitations techniques : La gestion des permissions s'avĂšre problĂ©matique dans certains contextes. Les navigateurs peuvent parfois dysfonctionner selon les actions des utilisateurs, empĂȘchant l'utilisation de certaines fonctionnalitĂ©s essentielles comme l'appareil photo ou la gĂ©olocalisation.

Conclusion : Une alternative qui a fait ses preuves

C'est une excellente voie pour tester rapidement ses idées et affiner son produit avant de migrer éventuellement vers un processus plus traditionnel (natif) une fois le projet mature.