Le mois dernier, un client m'appelle, un peu paniqué. Il a une trentaine de milliers d'utilisateurs sur son site e-commerce, et son associé veut « absolument une app sur le store ». Budget serré. Trois mois avant Noël. Je lui ai posé une seule question : « Vous avez besoin de quoi, un scanner de code-barres pour l'entrepôt, ou une vitrine qui envoie des notifications ? » Silence de dix secondes. C'est là que tout se joue.
Parce que la vraie question derrière le développement d'applications natives ou hybrides n'est jamais technique. Elle est stratégique. Et la plupart des comparatifs que j'ai lus ces dernières années se contentent de réciter « natif = rapide, hybride = pas cher », comme si c'était un débat tranché une fois pour toutes. Sauf que ce débat bouge. Il bouge même beaucoup depuis deux ans.
Points clés à retenir
- Le natif n'est pas « meilleur » dans l'absolu : il gagne sur les cas qui touchent au matériel, au temps réel et aux animations lourdes.
- L'hybride a rattrapé une grande partie de son retard de performance, mais pas sur tous les terrains.
- Le coût réel d'une app ne se joue pas au développement mais à la maintenance sur 3 ans. C'est là que les écarts explosent.
- Une PWA résout une partie des besoins à une fraction du prix — à condition d'accepter les limites d'iOS.
- Le choix se fait projet par projet, pas par religion technologique.
Natif ou hybride : ce qui change vraiment derrière l'étiquette
Une application native, c'est un logiciel compilé pour un système précis. Kotlin ou Java pour Android, Swift pour iOS. Elle parle directement au matériel, à la caméra, au GPS, aux notifications push, au Bluetooth. Elle est faite pour cette plateforme, et ça se sent dès qu'on scrolle.
Une application hybride (on dit aussi cross-platform), c'est une base de code unique — souvent Flutter, React Native, ou une coquille web dans un conteneur — qui va se compiler vers les deux plateformes. Vous écrivez une fois, vous déployez deux fois. Sur le papier, c'est formidable.
Application native : définition simple
C'est une application spécifique à une plateforme, écrite avec les outils recommandés par son éditeur. Elle utilise les composants d'interface natifs, donc elle se comporte exactement comme les autres apps du téléphone : les gestes, les transitions, la barre de statut, tout est cohérent. En contrepartie, si vous visez iOS et Android, vous développez deux fois.
Application native : un exemple concret
Prenons une app de suivi sportif qui enregistre votre course avec GPS, capteur cardiaque et accéléromètre, en arrière-plan, pendant que vous écoutez de la musique. C'est le cas d'usage typique où le natif garde un avantage net : accès direct aux capteurs, contrôle fin du cycle de vie en arrière-plan, gestion précise de la batterie. Dès qu'on touche au capteur et à l'arrière-plan, l'écart se resserre en faveur du natif.
Performance : arrêtons de répéter « l'hybride est lent »
J'ai développé ma première app hybride il y a plusieurs années. Elle raclait. Les listes saccadaient dès qu'on dépassait quelques centaines d'éléments, les animations sautaient, et j'avais honte de la montrer. Franchement, à l'époque, « l'hybride est lent » n'était pas un préjugé, c'était un constat.
Ça a changé. Sur les moteurs actuels, quand l'app est bien faite, l'utilisateur moyen ne voit pas la différence sur un écran de liste, un formulaire, un flux de contenu. Le seuil où l'hybride décroche, je le situe autour des cas suivants :
- Du rendu graphique lourd — jeux, cartes interactives avec beaucoup de données, éditeurs d'image.
- De l'animation continue à haute fréquence.
- De l'accès intensif au matériel en temps réel.
- Des traitements longs qui doivent tourner même quand l'app est fermée.
En dehors de ça, sur un projet de type vitrine, e-commerce, réservation, espace client, le natif n'apporte plus le gain perceptible qu'il apportait il y a cinq ans. Et le coût, lui, reste double sur la base de code.
Le point que je défends : sur une app métier classique, choisir le natif « parce que c'est plus performant » sans avoir identifié un seul scénario où la performance pose problème est une dépense sans contrepartie mesurable.
Temps de développement et coût réel : les chiffres qu'on ne vous donne jamais
Voici ce que j'observe sur mes propres projets, en ordre de grandeur. Sur une application de complexité moyenne — disons une dizaine d'écrans, un compte utilisateur, une API, des notifications :
| Approche | Temps de dev (base) | Deux plateformes | Coût de maintenance / an |
|---|---|---|---|
| Natif Android seul | référence 1x | non | 1x |
| Natif iOS + Android | environ 2x | oui | environ 2x |
| Hybride (base unique) | environ 1,3x | oui | environ 1x |
| PWA | environ 0,6x | oui (navigateur) | faible |
Ma règle empirique : l'hybride coûte environ 60 % d'un développement natif double à périmètre équivalent. Sur une app qui tient la route, on parle de plusieurs semaines-homme économisées. Mais attention, ce n'est pas là que se joue le vrai écart.
Le piège que personne ne mentionne : la maintenance
Une app vit trois à cinq ans. Sur cette durée, vous allez encaisser les mises à jour d'OS (Apple pousse une version majeure chaque année), les changements de règles des stores, les nouvelles exigences de confidentialité, les évolutions de vos propres API. Une base de code native double signifie deux fois ce travail. Une base hybride signifie une fois, plus la gestion des spécificités de chaque plateforme — qui existent, contrairement à ce que promet le marketing.
J'ai vu un projet hybride déraper parce que l'équipe avait promis « zéro code spécifique ». Résultat : au bout de dix-huit mois, 20 % du code était truffé de conditions « si iOS, sinon… ». La promesse de la base unique tenait sur le papier, pas dans le dépôt Git.
Flutter, React Native et la question des frameworks
Flutter compile vers du code natif et embarque son propre moteur de rendu. Conséquence : l'interface est identique sur les deux plateformes, ce qui est un atout pour une marque qui veut un rendu au pixel près — et un inconvénient si vous voulez que l'app « sente » l'OS de l'utilisateur.
React Native s'appuie sur les composants natifs de chaque plateforme. L'app ressemble donc davantage à une app de son OS, mais il faut accepter plus de variations entre iOS et Android.
Mon avis, et j'assume d'être partial : Flutter pour les équipes qui veulent un contrôle total du rendu et une seule vérité visuelle. React Native quand vous avez déjà des développeurs JavaScript dans l'équipe — réutiliser les compétences coûte souvent moins cher que d'en acquérir de nouvelles.
Quand choisir quoi : un cadre, pas un dogme
Le projet de mon client e-commerce, celui du début ? Il avait besoin de notifications push et d'un espace client. Rien qui touche au matériel. On est parti sur du cross-platform. Deux mois et demi plus tard, l'app était en ligne sur les deux stores. S'il m'avait demandé un scanner de codes-barres pour son entrepôt, on aurait basculé sur du natif Android, point final.
Voici comment je tranche, projet par projet :
- Votre app touche-t-elle au matériel de façon critique ? Caméra en temps réel, capteurs, Bluetooth, notifications avancées avec traitement en arrière-plan → natif, ou hybride avec modules natifs ciblés.
- Le rendu graphique est-il le cœur du produit ? Jeu, éditeur, carte interactive dense → natif.
- Sinon, l'hybride couvre la quasi-totalité des besoins métier, à un coût maîtrisé.
- Vous avez besoin d'une app dans le store, ou juste d'une expérience mobile ? Si vous n'avez pas besoin de figurer dans les stores ni d'accéder au matériel, une PWA suffit souvent.
Quelles sont les limites d'une application hybride ?
Trois choses à garder en tête. D'abord l'accès matériel : tout ce qui n'est pas exposé par le framework demande d'écrire un module natif, ce qui réintroduit du code spécifique. Ensuite les mises à jour d'OS : quand Apple ou Google changent une API profonde, le framework doit s'adapter, et vous dépendez du calendrier de sa communauté. Enfin la dette technique : une base hybride mal cadrée devient un patchwork de contournements, exactement comme dans mon exemple plus haut.
Et la PWA dans tout ça ?
Une PWA, c'est un site web qui s'installe sur l'écran d'accueil et fonctionne en partie hors ligne. Sur Android, elle peut recevoir des notifications push et s'intégrer à peu près correctement. Sur iOS, les restrictions restent réelles : installation moins fluide, notifications historiquement limitées, pas d'accès à une bonne partie du matériel.
Pour une app interne, un back-office mobile, un catalogue consulté occasionnellement, une PWA coûte une fraction du prix. Pour un produit grand public qui doit vivre dans le store et fidéliser, elle atteint vite son plafond.
Une question à se poser avant d'ouvrir l'IDE
Avant de choisir un framework, écrivez sur une feuille les trois choses que votre app doit absolument faire mieux que la concurrence. Pas les fonctionnalités. Les différenciateurs. Si aucun ne dépend du matériel ni du rendu graphique, la réponse est presque toujours la même : l'hybride vous fera gagner des mois et de l'argent.
Et si l'un de ces trois points touche au capteur ou à l'animation, alors vous savez déjà. Le débat natif contre hybride disparaît de lui-même. Il ne reste que votre projet, ses contraintes, et un choix qui n'a rien de religieux. La prochaine fois qu'on vous vend du natif « pour la performance », demandez quel scénario précis ça concerne. Le silence qui suit vous en dira long.