Développement d’application au Maroc : PWA, cross-platform ou natif ?
Une grille de décision pour choisir entre PWA, cross-platform et natif selon la distribution, le hors-ligne, les fonctions du téléphone et la maintenance.
Le développement d’application au Maroc ne commence pas par le choix d’un framework. Il commence par trois questions : comment l’utilisateur accédera-t-il au produit, quelles fonctions du téléphone sont réellement nécessaires et que doit-il encore pouvoir faire lorsque le réseau devient lent ou indisponible ? Une PWA convient souvent à un portail accessible par navigateur et mis à jour côté serveur. Une application cross-platform convient lorsqu’une présence iOS et Android, des notifications et une expérience mobile dédiée sont nécessaires avec une base de code largement partagée. Le natif devient pertinent lorsque le produit dépend fortement d’API de plateforme, de matériel, de performances spécialisées ou d’une intégration très fine à iOS et Android.
Ce guide complète l’offre Kanteek de développement web et mobile au Maroc. Il aide à formuler une décision vérifiable avant le devis, sans supposer qu’une technologie est toujours meilleure. Pour un outil interne ou un logiciel de gestion, consultez aussi notre méthode de conception d’une application métier au Maroc.
PWA, cross-platform et natif : trois architectures différentes
La PWA : une application distribuée par le web
Une Progressive Web App utilise les technologies du web et peut proposer une installation sur l’écran d’accueil, un mode autonome et certaines fonctions hors connexion. La documentation MDN précise que l’installation dépend notamment d’un manifeste web, de ressources d’icône et d’un service HTTPS, avec des différences de prise en charge selon le navigateur et la plateforme. Une PWA reste donc un produit à tester sur les appareils et navigateurs réellement utilisés, pas un raccourci universel vers toutes les capacités natives.
Elle est particulièrement cohérente pour un portail client, un catalogue, un tableau de bord ou un outil B2B accessible depuis un lien. Les mises à jour applicatives sont servies depuis le web. En revanche, l’équipe doit vérifier précisément les fonctions de périphérique, l’exécution en arrière-plan, les notifications et le parcours d’installation sur chaque plateforme visée.
Le cross-platform : une base partagée avec des points natifs
React Native et Flutter permettent de partager une part importante du produit entre iOS et Android tout en produisant une application distribuable sur les stores. Flutter décrit officiellement la construction d’applications multi-plateformes depuis une base de code, avec la possibilité d’écrire du code spécifique lorsqu’une fonction de plateforme l’exige. React Native expose de la même manière des modules et composants natifs pour accéder à des fonctions absentes du socle JavaScript.
Le cross-platform ne signifie donc pas « aucun code natif ». La bonne question est de savoir quelles fonctions peuvent rester communes et quelles dépendances exigent un module Swift, Kotlin ou une bibliothèque spécifique. Ce bilan doit être réalisé avant d’engager l’architecture.
Le natif : une application propre à chaque plateforme
Une application native utilise directement les outils et API d’iOS ou d’Android. Ce choix donne un contrôle étroit sur les fonctions de plateforme et facilite l’adoption rapide de certaines nouveautés. Il implique toutefois d’assumer deux environnements, deux cycles de compilation et des décisions de conception adaptées à chaque système. Le natif est justifié par une contrainte démontrée, pas par une préférence abstraite.
Les 8 critères qui permettent de choisir
1. Le canal de distribution attendu
Si l’utilisateur doit ouvrir un lien reçu par e-mail, WhatsApp ou QR interne, le web peut suffire. Si la présence dans les stores fait partie du parcours d’acquisition, de confiance ou de gestion de parc, il faut intégrer leurs règles dès le cadrage. Les App Review Guidelines d’Apple rappellent notamment qu’une application doit apporter une utilité suffisante au-delà d’un simple emballage de site web. La publication ne se résume donc pas à générer un fichier.
2. Les fonctions du téléphone réellement nécessaires
Listez chaque besoin : caméra, géolocalisation, Bluetooth, NFC, biométrie, fichiers, tâches en arrière-plan ou notifications. Pour chaque fonction, notez sa fréquence, son importance et les plateformes concernées. Android recommande de déclarer uniquement les permissions réellement nécessaires. Une fonction occasionnelle peut parfois être couverte par le web ou un module existant ; une fonction critique et profonde peut orienter vers le natif.
3. Le comportement hors connexion
« Fonctionner hors ligne » doit être traduit en scénarios précis : consulter des données déjà chargées, créer un dossier, prendre des photos, modifier un formulaire ou synchroniser plus tard. MDN explique que les service workers peuvent intercepter les requêtes et servir des ressources mises en cache pour une PWA. Android décrit de son côté une architecture offline-first où une source locale devient la référence de lecture et se synchronise avec le réseau. Les conflits, doublons et erreurs de reprise restent à concevoir dans chaque approche.
Pour un usage terrain, notre guide sur l’application mobile offline-first au Maroc détaille ces règles de données et de synchronisation.
4. L’expérience utilisateur et l’accessibilité
Les gestes, la navigation, le clavier, les tailles d’écran et les lecteurs d’écran doivent être testés sur les appareils cibles. Une interface identique au pixel près n’est pas toujours souhaitable : les utilisateurs iOS et Android ont des conventions différentes. Un design system partagé entre web et mobile peut préserver les composants et le langage visuel tout en autorisant les adaptations de plateforme. L’accessibilité numérique doit être intégrée aux composants et à la recette.
5. Les intégrations et dépendances externes
Recensez les API, SDK de paiement, cartes, authentification, outils analytiques et services de notification. Vérifiez officiellement les plateformes prises en charge, le mode de mise à jour et la maintenance des bibliothèques. Une intégration API reste un contrat entre systèmes : formats, erreurs, identités, limites et versions doivent être documentés indépendamment du choix mobile.
6. Les mises à jour et la gouvernance des stores
Une PWA peut recevoir des changements côté serveur, mais le cache et le service worker exigent une stratégie de version. Une application distribuée dans un store suit un processus de signature, de soumission et de revue. Les correctifs doivent être planifiés avec les règles des plateformes. L’équipe doit décider qui possède les comptes développeur, les certificats, les clés de signature et les fiches store.
7. Les compétences et la maintenance
Le choix doit tenir compte de l’équipe qui assurera le produit après le lancement. Évaluez la maîtrise du langage, la capacité à diagnostiquer un problème propre à iOS ou Android, la qualité des dépendances et le transfert de connaissances. Une base partagée réduit certaines duplications, mais ne supprime ni les tests par plateforme ni la veille sur les versions des systèmes.
8. La sécurité, les données et la recette
Définissez les données conservées sur l’appareil, les mécanismes de session, le chiffrement pertinent, les journaux et la révocation. Lorsque des données personnelles sont traitées au Maroc, le périmètre et les responsabilités doivent être vérifiés au regard de la loi 09-08 présentée par la CNDP. La recette doit couvrir les droits refusés, l’appareil hors ligne, la reprise, les mises à jour et les versions de système encore supportées.
Une règle de décision pratique
- Choisir une PWA lorsque l’accès par lien, le déploiement web et la couverture multi-écran priment, et que les fonctions de plateforme nécessaires sont réellement disponibles dans les navigateurs ciblés.
- Choisir le cross-platform lorsque le produit doit être publié sur iOS et Android, partage une logique importante et peut isoler les intégrations spécifiques dans des modules maîtrisés.
- Choisir le natif lorsque des contraintes mesurées de plateforme, de matériel, de performance ou de sécurité exigent un contrôle direct et durable sur chaque système.
Une architecture hybride peut aussi être cohérente : portail web pour l’administration, application mobile pour le terrain et services API partagés. Le choix porte alors sur les responsabilités de chaque composant plutôt que sur une technologie unique.
Le prototype qui valide la décision
Avant de construire tout le produit, réalisez un prototype sur le risque principal. Pour une PWA, testez l’installation, le cache, le mode hors ligne et les notifications sur les appareils cibles. Pour le cross-platform, testez le SDK ou le capteur le plus critique avec un build iOS et Android. Pour le natif, vérifiez que la contrainte justifie effectivement deux implémentations.
La preuve attendue doit être écrite avant le test : donnée disponible hors ligne, permission refusée sans blocage, synchronisation sans doublon, temps de réponse acceptable sur un appareil représentatif et soumission compatible avec les règles du store. Les performances peuvent ensuite être validées par des tests de charge adaptés aux API et aux usages réels.
Les erreurs à éviter
- Choisir Flutter, React Native ou le natif avant d’avoir listé les fonctions du produit.
- Promettre un mode hors ligne sans définir les données, les conflits et la reprise.
- Confondre une base de code partagée avec l’absence de tests iOS et Android.
- Créer les comptes store au nom d’un prestataire sans procédure de transfert.
- Demander toutes les permissions dès l’ouverture de l’application.
- Négliger la maintenance des dépendances, certificats et versions de système.
- Ajouter une application mobile alors qu’un portail web accessible répond au besoin.
FAQ sur le développement d’application au Maroc
Une PWA peut-elle fonctionner sans connexion ?
Oui, pour les parcours explicitement conçus autour d’un service worker, d’un cache et éventuellement d’un stockage local. Il faut définir ce qui reste consultable ou modifiable et comment les changements seront synchronisés.
React Native ou Flutter supprime-t-il tout développement natif ?
Non. Les deux approches permettent de partager une base importante, mais certaines fonctions exigent des plugins, des modules ou du code spécifique à la plateforme.
Faut-il publier une application sur les deux stores dès le départ ?
Pas nécessairement. La décision dépend des utilisateurs, des appareils réellement utilisés et du canal de distribution. Un prototype web ou une première plateforme peut parfois valider le besoin avant d’élargir.
Comment comparer les devis ?
Comparez le périmètre fonctionnel, les plateformes, les intégrations, les tests, la propriété des comptes et du code, la documentation, la maintenance et les conditions de transfert. Un nom de framework ne suffit pas à définir un livrable.
Décider avant de développer
Le développement d’application au Maroc gagne en fiabilité lorsque l’architecture découle des usages, des capacités de plateforme et du modèle d’exploitation. Une courte preuve technique sur le risque principal vaut mieux qu’une préférence générale pour le web, le cross-platform ou le natif. Pour cadrer ce choix et construire un périmètre testable, contactez Kanteek.
