{"id":1917,"date":"2026-10-13T07:51:28","date_gmt":"2026-10-13T07:51:28","guid":{"rendered":"https:\/\/nguyot.fr\/index.php\/2026\/10\/13\/expo-react-native-cli-mobile\/"},"modified":"2026-10-13T07:51:33","modified_gmt":"2026-10-13T07:51:33","slug":"expo-react-native-cli-mobile","status":"publish","type":"post","link":"https:\/\/nguyot.fr\/index.php\/2026\/10\/13\/expo-react-native-cli-mobile\/","title":{"rendered":"Expo vs React Native CLI\u00a0: quel choix pour votre projet mobile\u00a0?"},"content":{"rendered":"<aside class=\"wwc-brief\" aria-labelledby=\"wwc-brief-en-bref\">\n<h2 class=\"wwc-brief__title\" id=\"wwc-brief-en-bref\">En bref<\/h2>\n<ul class=\"wwc-brief__list\">\n<li class=\"wwc-brief__item\">Pour un MVP classique, pars sur Expo\u00a0: create-expo-app te donne un projet pr\u00eat sans Android Studio ni Xcode.<\/li>\n<li class=\"wwc-brief__item\">Tu passes au development build d\u00e8s qu\u2019une biblioth\u00e8que native n\u2019est pas dans Expo Go, comme les notifications push ou Firebase natif.<\/li>\n<li class=\"wwc-brief__item\">Expo garde l\u2019acc\u00e8s au natif via prebuild\u00a0: React Native CLI ne s\u2019impose que si ton \u00e9quipe doit contr\u00f4ler chaque fichier natif.<\/li>\n<\/ul>\n<\/aside>\n<nav class=\"wwc-toc\" aria-label=\"Sommaire\">\n<p class=\"wwc-toc__title\">Sommaire<\/p>\n<ol class=\"wwc-toc__list\">\n<li class=\"wwc-toc__item\"><a class=\"wwc-toc__link\" href=\"#expo-vs-react-native-cli-en-2026-expo-es\"><span>Expo vs React Native CLI en 2026\u00a0: Expo est le bon point de d\u00e9part pour un MVP<\/span><\/a><\/li>\n<li class=\"wwc-toc__item\"><a class=\"wwc-toc__link\" href=\"#expo-go-accelere-les-tests-mais-il-a-des\"><span>Expo Go acc\u00e9l\u00e8re les tests, mais il a des limites<\/span><\/a><\/li>\n<li class=\"wwc-toc__item\"><a class=\"wwc-toc__link\" href=\"#expo-garde-lacces-au-natif-mais-change-l\"><span>Expo garde l\u2019acc\u00e8s au natif, mais change la fa\u00e7on de le g\u00e9rer<\/span><\/a><\/li>\n<li class=\"wwc-toc__item\"><a class=\"wwc-toc__link\" href=\"#builds-mises-a-jour-et-couts-ce-qui-tran\"><span>Builds, mises \u00e0 jour et co\u00fbts\u00a0: ce qui tranche vraiment<\/span><\/a><\/li>\n<li class=\"wwc-toc__item\"><a class=\"wwc-toc__link\" href=\"#checklist-trancher-avant-de-creer-ton-ap\"><span>Checklist\u00a0: trancher avant de cr\u00e9er ton app<\/span><\/a><\/li>\n<li class=\"wwc-toc__item\"><a class=\"wwc-toc__link\" href=\"#foire-aux-questions\"><span>Foire aux questions<\/span><\/a><\/li>\n<\/ol>\n<\/nav>\n<p>Faut-il vraiment installer Android Studio et Xcode avant d\u2019\u00e9crire ta premi\u00e8re ligne\u00a0?<\/p>\n<p>Le mauvais choix peut te faire perdre des heures de configuration. On fait le point sur expo vs react native cli 2026 pour trancher selon ton MVP.<\/p>\n<h2 id=\"expo-vs-react-native-cli-en-2026-expo-es\">Expo vs React Native CLI en 2026\u00a0: Expo est le bon point de d\u00e9part pour un MVP<\/h2>\n<figure><img decoding=\"async\" src=\"https:\/\/nguyot.fr\/wp-content\/uploads\/2026\/10\/photo-plan-s1-14a95332.jpg\" alt=\"Un ordinateur portable ferm\u00e9 et deux t\u00e9l\u00e9phones sont pos\u00e9s sur un bureau en bois, pr\u00e8s d\u2019une tasse, d\u2019une plante et d\u2019une lampe.\" loading=\"lazy\"><\/figure>\n<p>Le \u00ab\u00a0React Native CLI\u00a0\u00bb classique, c\u2019est <strong>@react-native-community\/cli<\/strong>. Tu cr\u00e9es un projet qui g\u00e9n\u00e8re les dossiers android et ios. Ensuite, tu g\u00e8res tout avec Android Studio, Gradle, Xcode et CocoaPods.<\/p>\n<p>\u00c7a marche, mais c\u2019est d\u00e9j\u00e0 beaucoup de pi\u00e8ces mobiles avant d\u2019avoir \u00e9crit une seule ligne utile.<\/p>\n<h3>Expo fait gagner une bonne heure au d\u00e9marrage<\/h3>\n<p>Installe <strong>Node.js 20.19<\/strong> ou une version compatible, puis lance npx create-expo-app@latest. Tu obtiens un projet avec le SDK Expo 56, React Native 0.85 et React 19.2.3. Trois commandes suffisent\u00a0:<\/p>\n<ol>\n<li>npx create-expo-app@latest mon-app<\/li>\n<li>cd mon-app<\/li>\n<li>npx expo start<\/li>\n<\/ol>\n<div class=\"wwc\" x-cloak x-data=\"{&quot;title&quot;:&quot;Quel outil choisir pour ton MVP mobile\u00a0?&quot;,&quot;subtitle&quot;:&quot;R\u00e9ponds \u00e0 3 questions pour savoir si Expo ou React Native CLI convient \u00e0 ton projet.&quot;,&quot;progressFormat&quot;:&quot;Question {current} sur {total}&quot;,&quot;recommendationLabel&quot;:&quot;Notre recommandation pour toi&quot;,&quot;restartButtonLabel&quot;:&quot;Recommencer&quot;,&quot;questions&quot;:[{&quot;q&quot;:&quot;Ton MVP a-t-il besoin de biblioth\u00e8ques natives (notifications push, Firebase natif, extension iOS)\u00a0?&quot;,&quot;options&quot;:[{&quot;label&quot;:&quot;Non, aucune biblioth\u00e8que native rare&quot;,&quot;scores&quot;:{&quot;A&quot;:3,&quot;B&quot;:0}},{&quot;label&quot;:&quot;Oui, quelques-unes que je dois ajouter&quot;,&quot;scores&quot;:{&quot;A&quot;:1,&quot;B&quot;:1}},{&quot;label&quot;:&quot;Oui, beaucoup, avec du code Swift ou Kotlin maison&quot;,&quot;scores&quot;:{&quot;A&quot;:0,&quot;B&quot;:3}}]},{&quot;q&quot;:&quot;As-tu d\u00e9j\u00e0 un projet React Native en place\u00a0?&quot;,&quot;options&quot;:[{&quot;label&quot;:&quot;Non, je pars de z\u00e9ro&quot;,&quot;scores&quot;:{&quot;A&quot;:3,&quot;B&quot;:0}},{&quot;label&quot;:&quot;Oui, et je veux l\u2019am\u00e9liorer sans tout r\u00e9\u00e9crire&quot;,&quot;scores&quot;:{&quot;A&quot;:2,&quot;B&quot;:1}},{&quot;label&quot;:&quot;Oui, avec une architecture native tr\u00e8s personnalis\u00e9e&quot;,&quot;scores&quot;:{&quot;A&quot;:0,&quot;B&quot;:3}}]},{&quot;q&quot;:&quot;Ton \u00e9quipe doit-elle contr\u00f4ler chaque fichier natif et disposer d\u2019un Mac pour iOS\u00a0?&quot;,&quot;options&quot;:[{&quot;label&quot;:&quot;Non, je veux aller vite sans Android Studio ni Xcode&quot;,&quot;scores&quot;:{&quot;A&quot;:3,&quot;B&quot;:0}},{&quot;label&quot;:&quot;Je ne sais pas encore&quot;,&quot;scores&quot;:{&quot;A&quot;:1,&quot;B&quot;:1}},{&quot;label&quot;:&quot;Oui, une contrainte interne impose un contr\u00f4le total&quot;,&quot;scores&quot;:{&quot;A&quot;:0,&quot;B&quot;:3}}]}],&quot;results&quot;:{&quot;A&quot;:{&quot;title&quot;:&quot;Expo&quot;,&quot;text&quot;:&quot;Expo est le bon point de d\u00e9part pour un MVP. create-expo-app te donne un projet pr\u00eat sans Android Studio ni Xcode. Tu passes au development build d\u00e8s qu\u2019une biblioth\u00e8que native n\u2019est pas dans Expo Go, comme les notifications push ou Firebase natif. Expo garde l\u2019acc\u00e8s au natif via prebuild.&quot;},&quot;B&quot;:{&quot;title&quot;:&quot;React Native CLI&quot;,&quot;text&quot;:&quot;React Native CLI ne s\u2019impose que si ton \u00e9quipe doit contr\u00f4ler chaque fichier natif. Tu cr\u00e9es un projet qui g\u00e9n\u00e8re les dossiers android et ios, puis tu g\u00e8res tout avec Android Studio, Gradle, Xcode et CocoaPods.&quot;}},&quot;scores&quot;:{&quot;A&quot;:0,&quot;B&quot;:0},&quot;lastOption&quot;:{},&quot;current&quot;:0,&quot;finished&quot;:false}\">\n<div class=\"wwc-header\">\n<div class=\"wwc-title\" x-text=\"title\"><\/div>\n<div class=\"wwc-subtitle\" x-show=\"!finished\" x-text=\"subtitle || progressFormat.replace('{current}', current + 1).replace('{total}', questions.length)\"><\/div>\n<div class=\"wwc-subtitle\" x-show=\"finished\" x-text=\"recommendationLabel\"><\/div>\n<\/p><\/div>\n<div class=\"wwc-body\" x-show=\"!finished\">\n<p x-text=\"questions[current].q\">\n<div class=\"wwc-grid\" style=\"--wwc-grid-cols: 1;\">\n      <template x-for=\"(opt, i) in questions[current].options\" :key=\"i\"><\/p>\n<div style=\"display:contents\">\n          <button class=\"wwc-secondary\" x-on:click=\"((scores.A = scores.A + (opt.scores.A || 0)) || true) &amp;&amp; ((scores.B = scores.B + (opt.scores.B || 0)) || true) &amp;&amp; ((lastOption = opt.scores) || true) &amp;&amp; (current < questions.length - 1 ? current++ : finished = true)\" x-text=\"opt.label\"><\/button>\n        <\/div>\n<p>      <\/template>\n    <\/div>\n<\/p><\/div>\n<div class=\"wwc-body\" x-show=\"finished\">\n<div class=\"wwc-grid\" style=\"--wwc-grid-cols: 1;\">\n<div class=\"wwc-column wwc-icon-pro\">\n<div class=\"wwc-title\" x-text=\"results[(scores.A + (lastOption.A || 0) \/ 100) >= (scores.B + (lastOption.B || 0) \/ 100) ? &lsquo;A&rsquo; : (&lsquo;B&rsquo;)].title\u00a0\u00bb><\/div>\n<p x-text=\"results[(scores.A + (lastOption.A || 0) \/ 100) >= (scores.B + (lastOption.B || 0) \/ 100) ? &lsquo;A&rsquo; : (&lsquo;B&rsquo;)].text\u00a0\u00bb><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"wwc-footer\" x-show=\"finished\">\n    <button class=\"wwc-secondary\" x-on:click=\"((current = 0) || true) &amp;&amp; ((finished = false) || true) &amp;&amp; ((lastOption = {}) || true) &amp;&amp; ((scores.A = 0) || true) &amp;&amp; ((scores.B = 0) || true)\" x-text=\"restartButtonLabel\"><\/button>\n  <\/div>\n<\/div>\n<h3>Tu peux aussi migrer un projet React Native existant<\/h3>\n<p>Pas besoin de tout recommencer. Dans un <a href=\"https:\/\/nguyot.fr\/index.php\/2026\/08\/25\/migration-application-native-react-native\/\">projet React Native d\u00e9j\u00e0 en place<\/a>, <strong>npx install-expo-modules@latest<\/strong> installe et configure le package expo. Tu ajoutes ensuite les modules dont tu as besoin, sans r\u00e9\u00e9crire tes \u00e9crans.<\/p>\n<p>Reste sur React Native CLI seul dans ces cas\u00a0:<\/p>\n<p class=\"wwc-sheet__title\" id=\"wwc-callout-rester-sur-react-native-cli-dans-ces-cas\">Rester sur React Native CLI, dans ces cas<\/p>\n<ul class=\"wwc-check-list\" aria-labelledby=\"wwc-callout-rester-sur-react-native-cli-dans-ces-cas\">\n<li class=\"wwc-check__item\"><span class=\"wwc-check__box\" aria-hidden=\"true\"><\/span><span class=\"wwc-check__text\">Ton \u00e9quipe doit contr\u00f4ler chaque fichier natif.<\/span><\/li>\n<li class=\"wwc-check__item\"><span class=\"wwc-check__box\" aria-hidden=\"true\"><\/span><span class=\"wwc-check__text\">Elle a d\u00e9j\u00e0 une architecture Android et iOS tr\u00e8s personnalis\u00e9e.<\/span><\/li>\n<li class=\"wwc-check__item\"><span class=\"wwc-check__box\" aria-hidden=\"true\"><\/span><span class=\"wwc-check__text\">Une contrainte interne interdit tout framework.<\/span><\/li>\n<\/ul>\n<p>Sinon, tu finis souvent par recr\u00e9er ton propre mini-Expo. Tu maintiens alors plus de fichiers pour le m\u00eame r\u00e9sultat.<\/p>\n<h2 id=\"expo-go-accelere-les-tests-mais-il-a-des\">Expo Go acc\u00e9l\u00e8re les tests, mais il a des limites<\/h2>\n<p>Expo Go est une app native d\u00e9j\u00e0 compil\u00e9e. Elle embarque un ensemble fixe de biblioth\u00e8ques. Tu modifies ton code JavaScript ou TypeScript et tu vois le r\u00e9sultat tout de suite, sans compiler ta propre app.<\/p>\n<div class=\"wwc wwc-shield\">\n<div class=\"wwc-title\">Une biblioth\u00e8que peut ne pas \u00eatre dans Expo Go<\/div>\n<p>Une biblioth\u00e8que compatible React Native n\u2019est pas forc\u00e9ment dans Expo Go. Si elle ajoute du code natif (Swift, Kotlin, Java), elle n\u2019appara\u00eetra jamais dans l\u2019app install\u00e9e sur ton t\u00e9l\u00e9phone.<\/p>\n<\/div>\n<h3>Quand il faut quitter Expo Go<\/h3>\n<p>D\u00e8s que ton MVP touche \u00e0 l\u2019un de ces points, passe au development build\u00a0:<\/p>\n<ul>\n<li>une biblioth\u00e8que absente de l\u2019app\u00a0;<\/li>\n<li>des notifications push distantes\u00a0;<\/li>\n<li>Firebase natif\u00a0;<\/li>\n<li>des liens universels personnalis\u00e9s\u00a0;<\/li>\n<li>une extension iOS\u00a0;<\/li>\n<li>une modification pr\u00e9cise du manifeste Android.<\/li>\n<\/ul>\n<h3>Le development build devient ton vrai environnement<\/h3>\n<p>Pour basculer, <strong>installe le client<\/strong>, g\u00e9n\u00e8re le projet natif, puis compile\u00a0:<\/p>\n<p class=\"wwc-sheet__title\" id=\"wwc-callout-les-trois-commandes-pour-basculer\">Les trois commandes pour basculer<\/p>\n<ol class=\"wwc-steps\" aria-labelledby=\"wwc-callout-les-trois-commandes-pour-basculer\">\n<li class=\"wwc-steps__item\">\n<div>\n<h3 class=\"wwc-steps__title\">Installe le client<\/h3>\n<p class=\"wwc-steps__text\">Lance npx expo install expo-dev-client.<\/p>\n<\/div>\n<\/li>\n<li class=\"wwc-steps__item\">\n<div>\n<h3 class=\"wwc-steps__title\">G\u00e9n\u00e8re le projet natif<\/h3>\n<p class=\"wwc-steps__text\">Lance npx expo prebuild &#8211;clean.<\/p>\n<\/div>\n<\/li>\n<li class=\"wwc-steps__item\">\n<div>\n<h3 class=\"wwc-steps__title\">Compile l\u2019app<\/h3>\n<p class=\"wwc-steps__text\">Lance npx expo run:android, ou npx expo run:ios.<\/p>\n<\/div>\n<\/li>\n<\/ol>\n<figure><img decoding=\"async\" src=\"https:\/\/nguyot.fr\/wp-content\/uploads\/2026\/10\/photo-plan-s2-81bd6f5f.jpg\" alt=\"Une personne se tient devant un \u00e9cran dans une all\u00e9e bord\u00e9e de rang\u00e9es de serveurs illumin\u00e9s.\" loading=\"lazy\"><\/figure>\n<p>EAS Build compile dans le cloud. Tu n\u2019as donc pas besoin d\u2019Android Studio ni de Xcode pour produire un binaire iOS, et tu peux le faire depuis Windows ou Linux. En local, Android demande Android Studio et iOS demande Xcode.<\/p>\n<p>Le premier build prend du temps. Ensuite, une modification JavaScript ou TypeScript se teste avec <strong>npx expo start<\/strong>. Tu ne recompiles qu\u2019apr\u00e8s un changement de d\u00e9pendance, de configuration native ou de SDK.<\/p>\n<h2 id=\"expo-garde-lacces-au-natif-mais-change-l\">Expo garde l\u2019acc\u00e8s au natif, mais change la fa\u00e7on de le g\u00e9rer<\/h2>\n<figure><img decoding=\"async\" src=\"https:\/\/nguyot.fr\/wp-content\/uploads\/2026\/10\/photo-plan-s3-bcafbf56.jpg\" alt=\"Une pince \u00e0 \u00e9piler intervient sur les composants \u00e9lectroniques d\u2019un t\u00e9l\u00e9phone ouvert, pr\u00e8s de ses cam\u00e9ras, sur un plan de travail sombre.\" loading=\"lazy\"><\/figure>\n<p>Expo ne supprime pas le natif. Il change le moment o\u00f9 tu le g\u00e9n\u00e8res et la fa\u00e7on dont tu conserves sa configuration. \u00ab\u00a0Pas de dossiers natifs au d\u00e9part\u00a0\u00bb ne veut pas dire \u00ab\u00a0impossible d\u2019\u00e9crire du code natif\u00a0\u00bb.<\/p>\n<p><strong>npx expo prebuild<\/strong> cr\u00e9e les dossiers android et ios. Il applique app.json ou app.config.js. Ce m\u00e9canisme s\u2019appelle Continuous Native Generation (CNG). Tu peux supprimer ces dossiers et les r\u00e9g\u00e9n\u00e9rer \u00e0 tout moment.<\/p>\n<p>Tu as trois options pour ajouter du natif\u00a0:<\/p>\n<ol>\n<li>\u00c9crire ton code natif avec <strong>l\u2019API Expo Modules, en Swift et Kotlin<\/strong>.<\/li>\n<li>Utiliser une biblioth\u00e8que React Native native.<\/li>\n<li>Modifier directement les projets g\u00e9n\u00e9r\u00e9s.<\/li>\n<\/ol>\n<div class=\"wwc wwc-tip\">\n<div class=\"wwc-title\">Development build obligatoire pour les deux premi\u00e8res options<\/div>\n<p>Les deux premi\u00e8res options exigent un development build pour embarquer le code dans ton app. Sans lui, ton code natif ne sera pas inclus.<\/p>\n<\/div>\n<h2 id=\"builds-mises-a-jour-et-couts-ce-qui-tran\">Builds, mises \u00e0 jour et co\u00fbts\u00a0: ce qui tranche vraiment<\/h2>\n<p>EAS Build compile les apps Android sur <strong>des environnements Linux<\/strong>. Il compile les apps iOS sur des machines macOS, dans le cloud. EAS fonctionne aussi avec un projet React Native existant, avec ou sans Expo.<\/p>\n<p>Expo et son CLI sont gratuits et <strong>open source<\/strong>. EAS est un service cloud \u00e0 part.<\/p>\n<p>Tu peux builder en local avec <strong>Android Studio et Xcode<\/strong>. Tu peux aussi passer par une autre cha\u00eene CI\/CD. Ou tu peux payer EAS, qui all\u00e8ge la gestion des certificats et des machines de build.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/nguyot.fr\/wp-content\/uploads\/2026\/10\/photo-plan-s4-cec3aa2e.jpg\" alt=\"Une main ajoute une pi\u00e8ce au sommet d\u2019une grande pile, \u00e0 c\u00f4t\u00e9 de deux piles de pi\u00e8ces plus petites pos\u00e9es sur une table.\" loading=\"lazy\"><\/figure>\n<p>Les tarifs EAS sont affich\u00e9s <strong>en dollars, hors taxes<\/strong>.<\/p>\n<figure class=\"wwc-table\">\n<div class=\"wwc-table__scroll\" tabindex=\"0\" role=\"group\" aria-label=\"Tableau comparatif, d\u00e9filement horizontal\">\n<table class=\"wwc-table__el\">\n<thead>\n<tr>\n<th scope=\"col\">Crit\u00e8re<\/th>\n<th scope=\"col\">Free<\/th>\n<th scope=\"col\">Starter<\/th>\n<th scope=\"col\">Production<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th scope=\"row\">Prix par mois, hors taxes<\/th>\n<td>0\u00a0$<\/td>\n<td>19\u00a0$, soit environ 16\u00a0\u20ac<\/td>\n<td>199\u00a0$, soit environ 170\u00a0\u20ac<\/td>\n<\/tr>\n<tr>\n<th scope=\"row\">Builds inclus<\/th>\n<td>15 builds Android et 15 builds iOS par mois<\/td>\n<td>45\u00a0$ de cr\u00e9dit de build<\/td>\n<td>225\u00a0$ de cr\u00e9dit de build<\/td>\n<\/tr>\n<tr>\n<th scope=\"row\">Utilisateurs actifs mensuels (EAS Update)<\/th>\n<td>1\u00a0000<\/td>\n<td>3\u00a0000<\/td>\n<td>50\u00a0000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/figure>\n<div class=\"wwc wwc-shield\">\n<div class=\"wwc-title\">Changement natif\u00a0: nouveau build obligatoire<\/div>\n<p>Une nouvelle biblioth\u00e8que native, une permission, une modification de Info.plist, du manifeste Android ou du SDK touche la couche native. Dans ce cas, il faut un nouveau build install\u00e9 avant de publier la mise \u00e0 jour.<\/p>\n<\/div>\n<h2 id=\"checklist-trancher-avant-de-creer-ton-ap\">Checklist\u00a0: trancher avant de cr\u00e9er ton app<\/h2>\n<p>Pour un MVP sans module natif rare, <strong>create-expo-app suffit<\/strong>. Teste le parcours dans Expo Go. Passe au development build seulement si tu en as besoin.<\/p>\n<p>Tu as d\u00e9j\u00e0 un projet React Native\u00a0? Lance <strong>npx install-expo-modules@latest<\/strong>. Expo s\u2019ajoute, et tu ne migres pas tout ton code.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/nguyot.fr\/wp-content\/uploads\/2026\/10\/photo-plan-s5-0e82dc54.jpg\" alt=\"Deux personnes sont assises \u00e0 une table en bois\u00a0; l\u2019une montre un t\u00e9l\u00e9phone \u00e0 l\u2019autre, qui tient un ordinateur portable ferm\u00e9, avec une tasse et un carnet pos\u00e9s sur la table.\" loading=\"lazy\"><\/figure>\n<p class=\"wwc-sheet__title\" id=\"wwc-callout-ce-qu-il-faut-verifier-avec-ton-equipe-a\">Ce qu\u2019il faut v\u00e9rifier avec ton \u00e9quipe avant de lancer<\/p>\n<ul class=\"wwc-check-list\" aria-labelledby=\"wwc-callout-ce-qu-il-faut-verifier-avec-ton-equipe-a\">\n<li class=\"wwc-check__item\"><span class=\"wwc-check__box\" aria-hidden=\"true\"><\/span><span class=\"wwc-check__text\">Les biblioth\u00e8ques natives indispensables<\/span><\/li>\n<li class=\"wwc-check__item\"><span class=\"wwc-check__box\" aria-hidden=\"true\"><\/span><span class=\"wwc-check__text\">La machine disponible pour les builds iOS<\/span><\/li>\n<li class=\"wwc-check__item\"><span class=\"wwc-check__box\" aria-hidden=\"true\"><\/span><span class=\"wwc-check__text\">Le nombre de versions livr\u00e9es chaque mois<\/span><\/li>\n<\/ul>\n<p>Si tes contraintes restent classiques, <strong>Expo r\u00e9duit le travail<\/strong>. Tu gardes aussi l\u2019acc\u00e8s au natif.<\/p>\n<p>Quoi faire maintenant\u00a0: liste les biblioth\u00e8ques natives dont ton MVP a besoin. Si la liste est vide ou courte, lance create-expo-app aujourd\u2019hui. Si elle est longue, pr\u00e9vois le development build d\u00e8s le premier jour.<\/p>\n<p>Quoi faire maintenant\u00a0: liste les biblioth\u00e8ques natives dont ton MVP a besoin. Si la liste est vide ou courte, lance create-expo-app sans attendre. Si elle est longue, pr\u00e9vois le development build d\u00e8s le premier jour.<\/p>\n<h2 id=\"foire-aux-questions\">Foire aux questions<\/h2>\n<h3>Expo est-il toujours React Native\u00a0?<\/h3>\n<p>Oui. Une app Expo reste une app React Native, dont le rendu repose sur les projets Android et iOS g\u00e9n\u00e9r\u00e9s. Expo ajoute des outils et des biblioth\u00e8ques autour de React Native, sans le remplacer.<\/p>\n<h3>Expo Router est-il meilleur que React Navigation\u00a0?<\/h3>\n<p>Expo Router organise les \u00e9crans \u00e0 partir des fichiers de ton projet et s\u2019int\u00e8gre directement \u00e0 Expo. React Navigation est une biblioth\u00e8que s\u00e9par\u00e9e qui te laisse d\u00e9cider toi-m\u00eame de l\u2019organisation des \u00e9crans. Pour un MVP, choisis selon ton architecture et ce que tu ma\u00eetrises d\u00e9j\u00e0.<\/p>\n<h3>Expo vaut-il le co\u00fbt pour une entreprise\u00a0?<\/h3>\n<p>Commence sans rien payer, car le framework Expo est gratuit. Le co\u00fbt ne vient d\u2019EAS, et seulement si tu utilises ses builds, ses mises \u00e0 jour ou ses services cloud. Compare alors le temps que tu gagnes avec le prix mensuel, et garde des builds locaux si cela te suffit.<\/p>\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/@wwclib\/wwc@1\/wwc.min.css\">\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@alpinejs\/csp@3\/dist\/cdn.min.js\" defer><\/script><\/p>\n<style>.wwc { --wwc-primary: #3b82f6; }<\/style>\n","protected":false},"excerpt":{"rendered":"<p>En bref Pour un MVP classique, pars sur Expo\u00a0: create-expo-app te donne un projet pr\u00eat sans Android Studio ni Xcode. Tu passes au development build d\u00e8s qu\u2019une biblioth\u00e8que native n\u2019est pas dans Expo Go, comme les notifications push ou Firebase &#8230; <a title=\"Expo vs React Native CLI\u00a0: quel choix pour votre projet mobile\u00a0?\" class=\"read-more\" href=\"https:\/\/nguyot.fr\/index.php\/2026\/10\/13\/expo-react-native-cli-mobile\/\" aria-label=\"En savoir plus sur Expo vs React Native CLI\u00a0: quel choix pour votre projet mobile\u00a0?\">Lire plus<\/a><\/p>\n","protected":false},"author":2,"featured_media":1918,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1917","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50"],"_links":{"self":[{"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/posts\/1917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1917"}],"version-history":[{"count":2,"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/posts\/1917\/revisions"}],"predecessor-version":[{"id":1925,"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/posts\/1917\/revisions\/1925"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/media\/1918"}],"wp:attachment":[{"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/categories?post=1917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nguyot.fr\/index.php\/wp-json\/wp\/v2\/tags?post=1917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}