AIMobile DevelopmentReact NativeFlutterSwiftKotlinCross-PlatformClaude Code

Développement d'applications mobiles à l'ère des agents de codage IA : natif vs cross-platform

Sloth255
Sloth255
·17 min read·3,670 words

Développement d'applications mobiles à l'ère des agents de codage IA : natif vs cross-platform

Introduction

À mesure que les agents de codage IA deviennent une force centrale du développement logiciel, le choix d'un framework mobile doit lui aussi être évalué selon de nouveaux critères. Cet article compare le développement natif (Swift/Kotlin), Flutter et React Native sous l'angle suivant : jusqu'où un agent IA peut-il écrire du code de manière précise et autonome ? Nous nous intéressons en particulier à l'impact des implémentations hybrides, à la frontière entre cross-platform et natif, sur le travail assisté par l'IA.

Cet article s'appuie sur les informations disponibles en mars 2026. Les sources sont indiquées directement dans le texte.

1. Hypothèses

Cet article part du principe que des agents de codage IA comme Claude Code, GitHub Copilot, Cursor et Windsurf sont utilisés comme moteur principal du développement. Il ne s'agit pas simplement d'autocomplétion, mais d'un usage agentique dans lequel on décrit les besoins et l'outil crée des fichiers, modifie le code et exécute les tests de manière autonome.

Dans ce cadre, un critère d'évaluation essentiel devient la capacité d'un agent IA à produire le code concerné de façon précise et autonome. Or, dans le développement réel d'une application, le code cross-platform ne suffit souvent pas à lui seul et doit être combiné à des implémentations natives. La question centrale est donc de comprendre comment cette structure hybride influence les agents IA.


2. Qu'est-ce qui a changé d'ici 2026 ?

React Native : convergence vers la New Architecture

Dans React Native v0.76 (octobre 2024), la New Architecture (JSI/Fabric/TurboModules) est devenue l'option par défaut. Dans la v0.82 (octobre 2025), la possibilité de revenir à l'ancienne architecture a été désactivée. Puis, dans la v0.84 (février 2026), Hermes V1 est devenu le moteur JavaScript par défaut, et sur iOS l'ancien code d'architecture est arrivé à un stade où il est exclu des builds par défaut.

“Starting from React Native 0.76, the New Architecture is enabled by default in your projects.”
Blog officiel React Native — React Native 0.76 (octobre 2024)

“we're confident in making it the only architecture for this and future versions of React Native”
Blog officiel React Native — React Native 0.82: A New Era (octobre 2025)

Flutter : arrivée d'un serveur MCP officiel pour Dart

À partir du SDK Dart 3.9 (août 2025, référence : Announcing Dart 3.9), un serveur officiel Dart Model Context Protocol (MCP) a été ajouté au canal stable. Il peut s'intégrer directement avec Claude Code, Cursor, GitHub Copilot, Gemini CLI et d'autres outils. En 2026, l'un des points forts de Flutter est de permettre aux agents IA de gérer de façon autonome l'analyse de l'arbre de widgets, l'exécution de l'analyseur, les tests, les recherches sur pub.dev et la gestion des dépendances. Cela dit, la documentation officielle précise explicitement qu'il s'agit de quelque chose d'« experimental and likely to evolve quickly », ce qui signifie qu'il faut s'attendre à des évolutions d'API et de comportement en production.

L'intégration avec Claude Code peut être configurée avec cette unique commande :

claude mcp add --transport stdio dart -- dart mcp-server

Référence : Dart and Flutter MCP server — documentation officielle Flutter (mise à jour du 25 mars 2026)

React Native : montée en puissance d'Expo UI et des agent-skills

Deux évolutions importantes apparaissent aussi côté React Native. La première est Expo UI (Expo SDK 55, février 2026). Elle ouvre la voie à un modèle où des composants natifs SwiftUI et Jetpack Compose peuvent être utilisés depuis React Native, ce qui rend la frontière entre cross-platform et natif moins rigide qu'auparavant.

Expo UI reste toutefois en cours de maturation. Expo indique elle-même que la maturité du support Jetpack Compose et celle du support SwiftUI ne sont pas identiques. En pratique, cela signifie qu'il faut vérifier au cas par cas la stabilité et le risque de changements d'API avant un usage en production. À ce stade, il est plus juste de considérer Expo UI non comme une solution entièrement mature, mais comme un mécanisme prometteur qui fait progresser la réutilisation d'interfaces natives.

La seconde évolution est agent-skills de Callstack (janvier 2026). Callstack a publié un ensemble de compétences permettant à des agents IA comme Claude Code, Cursor et Codex de consulter directement des bonnes pratiques d'optimisation pour React Native. Ce n'est pas aussi profondément intégré qu'un serveur MCP, mais cela facilite l'accès des agents à des connaissances sur l'optimisation des performances, les implémentations de listes et la réduction de la taille des bundles.

Références : Expo SDK 55 Changelog (février 2026)
Références : Callstack — Announcing React Native Best Practices for AI Agents (janvier 2026)

Changement de design system : le choc de Material 3 Expressive

Material 3 Expressive (M3E), annoncé lors de la Google I/O en mai 2025 (référence : Google Blog — Material 3 Expressive), constitue une refonte majeure de l'interface Android, avec des animations à ressort, une nouvelle bibliothèque de formes et une typographie plus expressive. Il a été déployé sur les appareils Pixel avec Android 16 QPR1 (septembre 2025), puis adopté progressivement par les applications principales de Google.

Le point important est que le niveau de support diffère fortement selon les frameworks.

  • Jetpack Compose : les composants M3E sont disponibles dans la bibliothèque androidx.compose.material3. On peut utiliser de nouveaux composants comme LoadingIndicator, SplitButton, ButtonGroup et FloatingToolbar, ainsi que des API spécifiques à Expressive comme MotionScheme.
  • React Native (Expo UI) : puisque les composants Jetpack Compose peuvent être utilisés via Expo UI, il existe une voie possible vers M3E. Cependant, Expo UI elle-même n'étant pas encore stabilisée, il serait excessif d'affirmer que React Native constitue déjà une solution pleinement solide pour M3E.
  • Flutter : Material 3 Expressive n'est pas pris en charge en mars 2026. L'équipe Flutter a indiqué : “Currently, we are not actively developing Material 3 Expressive”, sans accepter de contributions à ce sujet. En arrière-plan, une réforme structurelle vise à découpler les bibliothèques Material et Cupertino du framework cœur. Ce découplage a commencé avec Flutter 3.41 (février 2026), et M3E devrait ensuite être proposé sous forme de package autonome, mais aucun calendrier n'a été fixé.

Références : Flutter GitHub Issue #168813 — Bring Material 3 Expressive to Flutter
Références : Android Developers — Material Design 3 in Compose


3. Les facteurs qui déterminent l'adéquation avec les agents IA

La capacité d'un agent de codage IA à générer du code avec précision dépend principalement des trois facteurs suivants.

  1. Le volume de données d'entraînement : React Native profite d'un corpus JS/TS massif. Flutter compense avec une documentation officielle solide et une compréhension du contexte renforcée par MCP.
  2. L'efficacité de consommation du contexte : le cross-platform reste dans une seule base de code, ce qui réduit la charge de contexte par rapport au natif, qui impose d'en gérer deux.
  3. L'intégration à la toolchain : le serveur MCP officiel de Dart pour Flutter est aujourd'hui la solution la plus structurée pour automatiser la boucle analyseur → correction → test. Du côté React Native, Callstack a également publié des agent-skills pour Claude Code, Cursor et outils similaires, ce qui réduit progressivement l'écart.

“AI code suggestion quality is roughly equivalent for both frameworks”
Flutter vs React Native 7 Tests (tech-insider.org, mars 2026)

Cela dit, cette comparaison n'est utilisée ici qu'à titre de contexte complémentaire. Les articles de sites tiers comme tech-insider.org ou vibrant-info.com sont utiles à lire, mais les conclusions de cet article reposent avant tout sur la documentation officielle, sur les informations techniques publiées par les éditeurs eux-mêmes et sur des politiques d'implémentation rendues publiques.

Comme ressources complémentaires, on peut aussi consulter l'article orienté startup React Native vs Flutter: Which Wins for Startups in 2026? (vibrant-info.com) et React Native Wrapped 2025 (Callstack), qui récapitule l'évolution de l'écosystème React Native pendant 2025.


4. Comparaison entre natif et cross-platform

Comparaison de l'adéquation avec les agents IA

Critère d'évaluation Natif (Swift / Kotlin) Flutter React Native (New Arch)
Volume de données d'entraînement IA Riche, mais fragmenté entre les OS ⚠️ Compréhension du contexte renforcée par MCP ⚠️ Corpus JS/TS le plus vaste ✅
Consommation de contexte Gestion de deux bases de code ❌ Une seule base de code ✅ Une seule base de code ✅
Intégration MCP pour les agents Intégration Xcode limitée ❌ Intégration profonde via le serveur MCP officiel Dart ✅ Couverture via Callstack agent-skills et initiatives similaires ⚠️
Caractère explicite des patterns de code Beaucoup de connaissances implicites ⚠️ Clair grâce à l'UI déclarative ✅ Plus prévisible avec la New Architecture ✅
Complexité de l'intégration native Appels directs possibles ✅ Via Platform Channel / FFI ⚠️ Via TurboModules + Codegen ⚠️

Comparaison des caractéristiques d'implémentation UI

Angle Swift (iOS) Kotlin (Android) Flutter React Native
Alignement avec la plateforme Facile de rester proche des HIG ✅ Implémentation officielle de Material 3 Expressive disponible ✅ Demande plus de travail à cause de son propre moteur de rendu ⚠️ Usage plus simple de SwiftUI/Jetpack Compose via Expo UI ⚠️
Cohérence entre iOS et Android iOS uniquement Android uniquement Identique sur les deux OS ✅ Les différences de plateforme ressortent plus facilement ⚠️
Liberté de design personnalisé Risque de rejet si l'on s'éloigne des HIG ⚠️ Grande richesse dans le cadre M3 ✅ Liberté totale grâce à son propre moteur ✅ Extensible avec Skia ✅
Support de Material 3 Expressive Composants M3E disponibles ✅ Non pris en charge pour l'instant, attendu après le découplage ❌ Voie potentielle via Expo UI ⚠️
Qualité d'animation Core Animation avec support 120 Hz ✅ Compose Animation ✅ 60/120 fps stables avec Impeller ✅ Animations pilotées par GPU avec Reanimated 3 + Skia ✅
Haptiques et UI intégrée à l'OS Intégration étroite avec Taptic Engine ✅ Vibration API et équivalents variables selon les appareils ⚠️ Limité via plugins ⚠️ Basé sur des plugins, amélioré par la New Architecture ⚠️
Précision de génération UI par IA Très bon pour SwiftUI, davantage de connaissances implicites avec UIKit ⚠️ Jetpack Compose présente encore des écarts avec les API récentes ⚠️ Les widgets déclaratifs fonctionnent bien avec l'IA ✅ JSX bénéficie d'une forte transférabilité des connaissances web ✅

5. La réalité des implémentations hybrides et leur impact sur les agents IA

Même si l'on choisit un framework cross-platform, le développement réel d'un produit crée des frontières où une implémentation native reste nécessaire. Des fonctionnalités comme l'appareil photo, le Bluetooth, l'authentification biométrique, les notifications push, l'AR ou HealthKit exigent souvent un accès direct aux API du système, ce qui implique d'appeler du code natif via des plugins, des Platform Channels ou des TurboModules.

Cette frontière est précisément la partie la plus difficile pour les agents IA. Quand une implémentation s'étend du monde Dart ou TypeScript au monde Swift ou Kotlin, le contexte se disperse sur plusieurs langages et plusieurs fichiers, ce qui augmente le risque d'erreurs de génération.

Implémentations hybrides avec Flutter : Platform Channel et FFI

Flutter offre principalement deux moyens d'appeler du code natif.

  • Platform Channel : mécanisme d'échange de messages entre Dart et Swift/Kotlin. La structure est claire, mais il faut garder synchronisés trois fichiers : la partie Dart, la partie iOS et la partie Android. Un agent IA peut facilement mettre à jour un côté tout en laissant des définitions de types incohérentes sur les autres.
  • Dart FFI : mécanisme permettant d'appeler directement des bibliothèques C/C++. Il rapproche des API système hautes performances, mais suppose une bonne compréhension des pointeurs et des correspondances de types, ce qui réduit encore la précision de génération par l'IA.

Référence : Documentation Flutter — Developing packages & plugins (mise à jour du 28 janvier 2026)

Implémentations hybrides avec React Native : TurboModules + Codegen

Depuis React Native v0.76, les modules natifs s'appuient sur TurboModules. Comme Codegen peut générer le boilerplate iOS (Swift/Obj-C) et Android (Kotlin) à partir d'un fichier de spécification TypeScript, la spec TypeScript peut plus naturellement devenir la Single Source of Truth.

// NativeMyModule.ts — Exemple de fichier Spec
import type { TurboModule } from 'react-native';
import { TurboModuleRegistry } from 'react-native';

export interface Spec extends TurboModule {
  getDeviceName(): string;
  requestCameraPermission(): Promise<boolean>;
}

export default TurboModuleRegistry.getEnforcing<Spec>('MyModule');

Codegen utilise cette spec pour générer le boilerplate à la fois pour iOS et pour Android. Cela permet aux agents IA de se concentrer plus facilement sur la couche TypeScript, tandis que le boilerplate natif répétitif est pris en charge automatiquement.

Références : Documentation officielle React Native — Native Modules: Introduction
Références : Callstack — Announcing React Native Best Practices for AI Agents (janvier 2026)

Par fonctionnalité : difficulté hybride et niveau de préparation pour l'IA

Fonctionnalité Flutter (difficulté pour l'IA) React Native (difficulté pour l'IA)
Appareil photo / photos Beaucoup de plugins matures sur pub.dev. Facile à générer pour l'IA ✅ react-native-vision-camera et bibliothèques similaires sont matures et compatibles New Architecture ✅
Notifications push Solutions standard comme firebase_messaging ✅ Expo Notifications est mature ✅
Authentification biométrique (Face ID, etc.) Pris en charge avec local_auth ✅ Pris en charge avec react-native-biometrics et solutions similaires ✅
Bluetooth / BLE Les spécifications sont complexes, et l'IA se trompe facilement sur les permissions ⚠️ Certains modules ne prennent pas encore totalement en charge TurboModules ⚠️
HealthKit / Health Connect L'IA confond facilement les différences entre iOS et Android ⚠️ Les différences de plateforme laissent plus de place aux erreurs d'implémentation ⚠️
Modules natifs personnalisés (implémentation propriétaire) S'étend sur Dart + Swift + Kotlin. L'IA commet souvent des erreurs de cohérence ❌ Le Codegen à partir d'une spec TypeScript aide à mieux circonscrire et structurer la zone de travail ⚠️
ARKit / ARCore Une implémentation native complexe reste nécessaire. Une mise en œuvre autonome par IA est difficile ❌ Même problème. Sans connaissance native, même la revue devient difficile ❌

Principes d'utilisation des agents IA dans les implémentations hybrides

“Native plugins and heavy custom logic still need human oversight.”
Stitch + Antigravity + Flutter (dev.to, mars 2026)


6. Que faut-il choisir ?

En tenant compte de la réalité des implémentations hybrides, voici des recommandations selon les scénarios.

Choisissez Flutter lorsque les besoins natifs se limitent à ce que des plugins matures couvrent déjà

Si vos besoins sont couverts par des plugins standard pour l'appareil photo, les notifications, l'authentification et les fonctions similaires, l'intégration des agents via Dart + le serveur MCP est très efficace. En revanche, si la partie Android doit respecter Material 3 Expressive, Flutter ne le prend toujours pas en charge et ce point doit être considéré sérieusement.

Choisissez React Native lorsque vous avez besoin de modules natifs personnalisés ou de conformité M3E

TurboModules + Codegen, centrés sur une spec TypeScript, facilitent la définition claire du périmètre de travail de l'agent IA. Cela constitue souvent un avantage dans les implémentations hybrides. Expo UI peut aussi offrir une voie vers les composants Jetpack Compose M3E, mais toute décision d'adoption doit être précédée d'une vérification de maturité.

Choisissez le natif lorsque l'implémentation native représente la majorité du produit

Si l'essentiel du travail est natif, comme avec ARKit, CoreML ou un contrôle BLE personnalisé, l'intérêt d'une couche commune cross-platform diminue. Dans ce cas, écrire l'application nativement dès le départ permet à l'IA de conserver son contexte dans un seul langage.

Stratégie hybride : Flutter pour la couche UI, code natif modulaire pour les traitements lourds côté plateforme

Une autre option consiste à construire l'essentiel de l'application avec Flutter tout en isolant clairement, sous forme de modules, uniquement les parties qui nécessitent un traitement natif. En laissant les agents IA se concentrer uniquement sur la couche Flutter, on peut mieux stabiliser la qualité de génération.


7. Conclusion

Le meilleur choix dépend moins de « quel framework choisir » que de « quelle proportion et quel type d'implémentation native votre produit exige ».

Si vos besoins natifs restent dans le périmètre couvert par des plugins matures, Flutter est très efficace, en particulier lorsqu'il est combiné à l'intégration d'un serveur MCP. Si vous avez besoin de modules natifs personnalisés, la structure centrée sur une spec TypeScript de React Native est plus facile à exploiter pour l'IA. Plus la part d'implémentation native augmente, plus les bénéfices du cross-platform diminuent, et plus la réponse se rapproche d'un développement purement natif.

Dans tous les cas, la précision d'un développement assisté par l'IA dépend fortement de la manière dont la frontière entre code natif et code cross-platform est conçue avant de confier le travail à l'agent.

Par ailleurs, si votre UI Android doit être conforme à Material 3 Expressive, React Native + Expo UI (via Jetpack Compose) ou le natif sont aujourd'hui des options plus réalistes que Flutter, qui reste non pris en charge en mars 2026. Cela dit, Expo UI côté React Native exige encore un suivi continu de sa maturité. L'équipe Flutter poursuit le découplage de ses bibliothèques de design, et M3E est censé arriver plus tard sous la forme d'un package autonome une fois ce travail achevé, mais le calendrier reste incertain.