__CAPGO_KEEP_0__ accueil
Mobile Guides

Votre Guide du Client de Développement Expo

Créez, construisez et utilisez le client de développement Expo avec ce guide complet. Apprenez à créer des builds EAS, à déboguer, à intégrer la CI/CD et à résoudre les problèmes courants.

Martin Donadieu

Martin Donadieu

Spécialiste du contenu

Votre Guide du Client de Développement Expo

Vous êtes généralement prêt pour le client de développement Expo au moment précis où Expo Go commence à vous mentir.

L'application fonctionne dans le sandbox. La mise à jour rapide se sent bien. Ensuite, vous ajoutez une dépendance native, configurez les notifications push, testez un flux OAuth ou essayez de reproduire la façon dont votre application de production démarre. Soudain, la lacune devient évidente. Vous ne déboguez plus votre application. Vous déboguez un environnement simplifié.

C'est là que le client de développement Expo change le flux de travail. Il conserve le boucle JavaScript rapide que les gens aiment chez Expo, mais déplace la mise en œuvre de tests dans un code natif personnalisé qui se comporte beaucoup plus comme l'application que vous allez finalement envoyer. Pour les développeurs solo, cela signifie moins de surprises tard dans le cycle. Pour les équipes, cela signifie un processus de développement qui peut supporter des builds partagés, des tests, des environnements de prévisualisation et des validations de mise à jour sans faire semblant que Expo Go peut couvrir tout.

Table des matières

Pourquoi vous devez aller au-delà d'Expo Go

Expo Go est utile au début. Il supprime la friction de configuration, met en route rapidement un projet React Native et donne un boucle de feedback rapide. C'est exactement pourquoi beaucoup d'équipes commencent par là.

Le problème commence lorsque l'application cesse d'être un prototype. Expo documente Expo Go comme un sandbox et note que cela ne peut pas simuler avec précision certaines capacités natives comme les notifications ou l'authentification OAuth, tandis que le modèle de construction de développement est construit autour de expo-dev-client et positionné comme un “Debug” build pour les applications de grade de production dans l'introduction des builds de développement Expo Un tableau de comparaison mettant en évidence les différences et les limitations clés entre les outils Expo Go et Expo Development Client..

Ce qui cède en premier

__CAPGO_KEEP_0__

In pratique, la première rupture est généralement l'une de ces:

  • Dépendances natives : Un package a besoin de code natives que Expo Go ne contient pas.
  • L'authentification : Un flux OAuth se comporte différemment une fois que l'application utilise une configuration native réelle.
  • Notifications et fonctionnalités de l'appareil : Le sandbox ne reflète pas la façon dont l'application de production demandera des permissions ou recevra des événements.
  • Équipe QA : Un testeur a besoin d'un binaire stable qui représente la mise en œuvre native réelle de l'application.

Ces cas ne sont pas des cas d'extrémité. Ce sont des étapes normales dans un projet mobile réel.

Expo Go est génial pour prouver une interface. C'est un endroit faible pour valider le comportement de production.

Pourquoi le client de développement est le bon pas suivant

Le client de développement Expo vous donne une application binaire personnalisée avec les outils de développement Expo intégrés. Cela signifie que vous conservez une expérience de développeur solide, mais la couche native est maintenant à vous. Le client installé devient la chose contre laquelle votre équipe test, au lieu de se fier à un conteneur générique.

Cette évolution compte plus qu'il n'y paraît. Une fois que vous passez à un client personnalisé, la question change de « Exécute-t-il dans Expo Go ? » à « Fonctionne-t-il dans l'application que nous sommes en train de construire ? » C'est la bonne question.

Si vous comparez également des modèles plus larges de livraison d'applications, l'écriture de Capgo sur un alternative à Expo est un contexte utile car elle met en évidence où les équipes commencent à regarder au-delà des workflows sandbox-first.

Le changement de mentalité

L'erreur la plus grande que je vois est de traiter le client de développement Expo comme une tâche de configuration unique. Ce n'est pas le cas. C'est une choix de workflow.

Vous acceptez un compromis pour gagner le contrôle :

Workflow Ce qui reste rapide Ce qui nécessite plus de cérémonie
Expo Go Itération de base de JavaScript Tout ce qui dépend de la réalité native
Client de développement Expo Les modifications de JavaScript à l'intérieur d'une application personnalisée Les modifications de dépendance native et les modifications de la configuration native

C'est un bon échange dans le développement d'applications professionnelles. Vous arrêtez d'optimiser pour la démo la plus facile et vous commencez à optimiser pour une livraison fiable.

Prérequis et Configuration du Projet

Avant de construire quoi que ce soit, mettez le projet dans un état qui peut survivre à des builds répétitifs. La plupart des premières tentatives échouées proviennent de la suppression de la configuration de base, et non de Expo lui-même.

La documentation et les conseils de l'écosystème d'Expo décrivent les builds de développement comme un « environnement de développement complet » qui est représentatif d'un environnement de production réel une fois que les applications dépendent de la code native personnalisée ou de la QA de niveau production, comme couvert dans l'aperçu de Draftbit sur les outils de développement Expo et les builds de développement Expo’s documentation and ecosystem guidance describe development builds as a.

Commencez par le compte et la couche CLI

Vous avez besoin de deux choses fonctionnant avant que la couche d'application ne compte :

  1. Accès Expo à CLI
  2. Accès EAS à CLI

Vous devrez également être connecté à votre compte Expo depuis le terminal. Les équipes ont souvent omis cela car les commandes locales peuvent sembler correctes jusqu'à ce qu'une première build distante ou un prompt de mot de passe de credenciaux apparaisse.

Une mise en place propre comprend généralement :

  • Votre session de compte Expo : Cela relie le travail local aux services de build distants et à la propriété du projet.
  • EAS CLI installé : EAS est ce qui transforme votre projet en un binaire partageable iOS ou Android.
  • Un projet qui fonctionne déjà localement : N'introduisez pas de complexité de build avant que le démarrage de l'application de base fonctionne.

Installez le package qui rend la workflow possible

Le centre de cette configuration est expo-dev-clientSans cela, vous n'avez pas le lancement personnalisé et la console native axée sur le débogage qui définit le flux de travail du client de développement Expo.

Installez-le dans le projet d'application, puis vérifiez que votre configuration Expo est cohérente. Les commandes exactes peuvent varier en fonction de votre gestionnaire de packages, mais le point architectural n'en change pas : ce package est ce qui transforme l'application de « exécute dans un sandbox partagé » en « exécute dans notre propre binaire de développement ».

Règle pratique : Construirez le client de développement une fois que la liste des dépendances natives est stable enough pour que les collègues puissent installer et utiliser le même binaire.

Vérifiez votre configuration d'application dès le début

Une grande partie de la confusion vient du fait de traiter app.json ou app.config.js comme des métadonnées uniquement. Ce n'est pas le cas. Ces fichiers définissent l'identité.

Assurez-vous que le projet a :

  • Un nom d'application unique : Utile lorsque les développeurs installent plusieurs variantes sur un appareil.
  • Identifiant unique ou clé de bundle ou de package : Essentiel pour les builds natifs et la signature ultérieure.
  • Intent clair de l'environnement : Si l'équipe utilise des identités de production et de pré-production séparées, reflétez cela intentionnellement.

Si votre environnement local est en désordre, il est utile de le nettoyer avant la première build. Le guide de Capgo sur la mise en place d'un environnement local Capgo n'est pas spécifique à Expo, mais il est un bon rappel que le travail mobile réprouvable commence avec des outils locaux stables et une configuration explicite. setting up a Capacitor local environment Utilisez ce tableau de bord avant de lancer EAS :

Vérifiez

Pourquoi cela compte

Pourquoi cela compte Pourquoi cela compte
expo-dev-client __CAPGO_KEEP_0__ est installé Active le comportement de client de développement personnalisé
L'account Expo est lié Nécessaire pour un usage EAS fluide
Les identifiants d'application sont uniques Empêche les conflits de construction et d'installation natives
Le projet démarre localement Évite de mélanger les problèmes de runtime avec les problèmes de construction
L'équipe sait quand reconstruire Réduit la confusion après les changements natives

L'objectif n'est pas la perfection. L'objectif est de rendre la première construction ennuyeuse. C'est un gain.

Créer votre client personnalisé avec EAS

C'est là où le flux de travail devient réel. Vous arrêtez de parler d'un client personnalisé et en générez un.

Expo recommande un flux de travail de construction de développement pour les applications avec un client natif personnalisé code: installez expo-dev-client, générer une application native avec EAS Build ou localement, puis exécutez npx expo start --dev-clientExpo note également dans le aperçu du flux de travail que les modifications uniquement JavaScript restent rapides, tandis que les modifications natif-code nécessitent une nouvelle construction de développement.

Un infographic à quatre étapes illustrant le processus de création d'un client de développement Expo à l'aide des outils EAS CLI.

Le flux de base EAS

La séquence est simple même si la première exécution vous semble étrangère :

  1. Installez et authentifiez-vous avec EAS CLI
  2. Initialisez ou confirmez la configuration de construction
  3. Créez un profil de construction de développement
  4. Déclenchez une construction pour iOS ou Android
  5. Installez le binaire résultant sur un appareil ou un simulateur

Ce que EAS vous donne, c'est de la cohérence. Au lieu que chaque développeur improvise un état de construction native locale, l'équipe peut produire des binaires à partir d'une définition de construction partagée.

Ce que votre profil de construction fait vraiment

Un profil n'est pas juste un étiquette. Il indique au système de construction que ce binaire est destiné à un développement actif, et non à une distribution de magasin. development Cela signifie généralement que l'application installée doit :

inclure le comportement du client de développement

  • être facile à lancer pour les développeurs et les testeurs
  • se connecter à un serveur Metro pendant le travail quotidien
  • restez réutilisable jusqu'à ce que les dépendances natives changent
  • C'est aussi là où le CI devient pratique. Une fois qu'un profil de construction existe et se comporte de manière prévisible, vous pouvez le automatiser.

A

Si votre équipe réfléchit plus largement sur la manière dont React Native s'insère dans un plus grand travail de modernisation, Wonderment Apps a une perspective utile sur React Native pour la modernisation de l'IA. Cela est pertinent car le client de développement devient souvent partie de la couche de base opérationnelle lorsque les équipes livrent des changements de produit plus fréquents sur les surfaces mobiles.

Un court parcours peut aider si vous voulez voir le flux en action :

L'installation du résultat

Une fois la construction terminée, traitez le résultat comme un véritable fichier binaire d'application, car c'est ce qu'il est.

  • Sur Android : Vous installerez généralement un .apk sur un appareil physique ou émulateur.
  • Sur iOS : Vous travaillerez avec un .ipa ou un résultat compatible avec le simulateur en fonction de la cible.
  • For les collègues : Partagez la construction à travers les mécanismes EAS normaux au lieu de demander à chacun de créer le leur depuis zéro, à moins que ce ne soit nécessaire.

Une construction de développement est la plus facile à gérer lorsque l'équipe s'accorde sur une règle : reconstruire pour les changements natifs, pas pour chaque changement de code.

Ce que vous ne devez pas attendre

Ne vous attendez pas à ce que la première construction élimine la complexité native. Cela met cette complexité dans le bon endroit.

Si vous ajoutez un nouveau module natif, modifiez les permissions, mettez à jour les dépendances natives de niveau SDK, ou modifiez la configuration native pilotée par plugin, vous aurez besoin d'une nouvelle construction de développement. C'est normal. Le récompense est que votre travail quotidien en JavaScript continue de se dérouler rapidement à l'intérieur d'un client qui reflète votre application.

Exécution et Débogage avec votre nouveau client

La première fois que vous ouvrez votre client installé et que vous le connectez à Metro, la différence est évidente. Cela ressemble à Expo, mais plus longtemps dans le sens du jouet.

Démarrer le serveur avec npx expo start --dev-client. Ensuite, ouvrez le client de développement sur votre simulateur, émulateur ou appareil physique et connectez-vous à travers l'interface de lancement. Cette interface est l'une des importantes modifications introduites par expo-dev-client, aux côtés du support de débogage comme l'inspection des requêtes réseau, comme documenté dans le page Expo SDK pour le client de développement.

A un développeur informatique masculin écrivant code sur un ordinateur portable dans un environnement de bureau professionnel.

Une session de développement normale

Une session typique ressemble à ceci :

Vous récupérez la dernière branche. Le client de développement installé est déjà sur votre appareil. Vous démarrez Metro, lancez l'application et vous connectez au serveur actuel. Ensuite, vous travaillez principalement comme vous le faisiez avant, en modifiant le JavaScript et en voyant les mises à jour rapidement.

La grande différence apparaît lorsque vous avez besoin d'inspecter un comportement qui dépend d'un environnement natif réel. Le client personnalisé vous permet de tester ces flux sans sortir de votre boucle régulière.

Les outils de débogage qui comptent

Les outils supplémentaires ne sont pas décoratifs. Ils résolvent des problèmes quotidiens.

  • Interface de lancement : Utile lors du passage entre environnements ou serveurs hébergés par des collègues.
  • Menu du développeur : Fournit les actions que vous attendez pendant l'itération active.
  • Inspection de réseau : Aide lorsque l'interface utilisateur semble brisée mais que le problème réel est une erreur de requête, un état d'authentification ou une mise en réseau incorrecte.

Lorsque les appels de API échouent dans un client de développement, inspectez le chemin de requête et les hypothèses de mise en réseau avant de toucher à l'interface utilisateur code. Le bug est souvent en dehors du composant que vous regardez.

Voici l'avantage pratique. Un seul fichier exécutable installé peut valider plusieurs environnements sans recompiler chaque fois. C'est particulièrement utile lorsque le réviseur souhaite tester une prévisualisation de PR, l'ingénieur QA souhaite la version de test, et le développeur souhaite une brancher locale.

Si votre équipe livre également des coquilles mobiles basées sur le web, le guide ultime de Capgo pour les applications ultimate guide to debugging Capacitor apps Ce qui fonctionne bien et ce qui ne fonctionne pas

Ce qui fonctionne bien :

Situation

Pourquoi le client de développement est utile Test des redirections d'authentification
Le comportement de l'application native est plus proche de la production Le comportement de l'application native est plus proche de la production.
Vérification de l'intégration API La vérification du réseau raccourcit le boucle de feedback
Switcher d'environnement La mise en page de lancer évite les rebuilds inutiles
La QA d'équipe sur un seul binaire Tout le monde teste la même mise en place native

Ce qui ne fonctionne pas bien :

  • Considérer le client comme jetable : S'il n'est pas maintenu par l'équipe, la confusion s'installe rapidement.
  • Ignorer les limites des rebuilds natives : Une fois que les dépendances natives changent, les clients obsolètes gaspillent du temps.
  • En supposant que toutes les erreurs de connexion sont des bugs d'application : Beaucoup sont juste des problèmes d'environnement local.

Intégration avec CI/CD et Mises à jour en temps réel

Le client de développement Expo devient beaucoup plus précieux lorsqu'il cesse d'être un setup personnel et devient partie des opérations d'équipe.

Un flux de travail mature sépare généralement les préoccupations.

Les changements natifs produisent une nouvelle build de développement. Les changements JavaScript et les actifs se déplacent par un chemin d'actualisation plus rapide. Les réviseurs et la QA n'ont pas besoin de demander si ils testent la bonne chose car l'équipe a convenu de canaux, de profils de build et de destinations d'actualisation.

Un équipe professionnelle collaborant sur un workflow d'automatisation de pipeline CI/CD sur un grand écran d'affichage d'entreprise.

Où CI/CD s'insère

Le client de développement fonctionne bien avec CI car il donne à l'automatisation une cible stable.

  • Un modèle courant ressemble à ceci : Les modifications de demande de tirage :
  • CI crée ou valide une build de développement lorsque les dépendances natives ont changé. Les environnements basés sur branch :
  • Flux de travail partagé des testeurs : Le QA installe un ou plusieurs clients de développement connus et passe en mode contexte à l'aide du lancement et de la configuration d'actualisation.

Cette structure réduit l'ambiguïté. Les développeurs savent quand ils ont besoin d'une reconstruction. Les testeurs savent si ils valident une modification native ou une mise à jour livrée sur une version existante.

Le rôle des mises à jour en temps réel

Le client de développement permet souvent aux équipes de gagner le plus de temps opérationnellement. Le client de développement est un endroit fort pour valider le comportement de mise à jour avant la mise en production car il peut passer entre les serveurs de développement et les mises à jour publiées dans une coquille d'application simulant la production, comme décrit plus tôt dans la documentation d'Expo.

Cela ouvre une utilisation utile :

Type de modification Voie de livraison
Nouvelle module native ou modification de permission Nouvelle version de développement
Correction de comportement JavaScript Publier une mise à jour
Réglage de la copie ou de l'actif Publier la mise à jour
Validation de l'environnement Switcher le canal ou le serveur dans le client installé

Pour les équipes en dehors de l'Expo update stack, Capgo’s guide d'intégration CI/CD pour les mises à jour OTA montre un modèle opérationnel comparable du côté Capacitor. Il s'agit d'une option pour les équipes qui veulent des canaux de mise à jour contrôlés et une automatisation autour de la livraison des mises à jour.

Le modèle fiable est simple. Construire lorsque les changements natifs code sont prêts. Publier lorsque le binaire installé contient déjà tout ce dont le changement a besoin.

Les habitudes d'équipe qui préviennent la chaos

La configuration technique compte, mais les règles d'exploitation comptent plus :

  • Nommer les canaux clairement : staging, production, et les noms de prévisualisation doivent être évidents.
  • Détecteurs de reconstruction de document : Un nouveau plugin, une modification de permission ou une mise à jour native SDK ne devrait jamais être un jugement.
  • Stratégie de client installable par environnement : Trop de variantes créent du bruit de support.
  • Faites la validation de mise à jour explicite : Quelqu'un devrait vérifier que la mise à jour s'applique et démarre à l'intérieur du même binaire que l'équipe attend.

À ce stade, le client de développement Expo cesse d'être un avantage pour les développeurs et devient une infrastructure de mise en production.

Dépannage des problèmes courants et corrections

La plupart des problèmes du client de développement Expo sont ordinaires une fois que vous savez où chercher. Ils semblent mystérieux car les échecs se produisent souvent à des frontières : ordinateur portable vers appareil, Metro vers application, configuration native vers runtime JavaScript.

L'un des problèmes les plus courants et peu discutés est la faillite de connexion à Metro sur les appareils physiques en raison de la segmentation du réseau local, des VPN ou des règles de pare-feu dans les environnements d'entreprise et les équipes distribuées, un point mis en évidence dans ce Vidéo de dépannage du client de développement Expo.

Lorsque le client ne se connecte pas à Metro

Cette est l'incident qui brûle le plus de temps car il ressemble à une application cassée lorsque l'application est souvent fine.

Vérifiez ces premiers :

  • Mêmes hypothèses de réseau : Les appareils et les ordinateurs portables peuvent sembler connectés tout en étant sur des segments isolés.
  • L'interférence VPN : Un VPN d'entreprise ou personnel peut rediriger le trafic de manière que Metro ne tolère pas bien.
  • Les règles de pare-feu : Les outils de sécurité peuvent bloquer le trafic de développement local sans le faire apparaître de manière évidente.
  • Les politiques de dispositif d'entreprise : Les appareils gérés peuvent parfois restreindre les modèles de trafic sur lesquels les outils de développement dépendent.

Si le projet fonctionne dans un simulateur mais pas sur un appareil physique, soupçonnez le réseau avant de soupçonner votre React code.

N'essayez pas de déboguer les échecs de connexion à partir de l'intérieur de l'application en premier. Confirmez que l'appareil peut vraiment atteindre la machine exécutant Metro.

Quand les reconstructions semblent aléatoires

Une autre frustration courante est le sentiment que certaines modifications apparaissent instantanément et que d'autres refusent obstinément de le faire.

Cela signifie généralement que l'équipe n'a pas intériorisé la limite de reconstruction :

Symptôme Cause probable Solution
Mises à jour JavaScript s'appliquent normalement Comportement attendu Continuez à travailler dans le client existant
La nouvelle dépendance native n'apparaît pas La couche native a changé Créez une nouvelle build de développement
Le comportement lié aux autorisations est incohérent La configuration native a changé Reconstruire et réinstaller
Un collègue observe un comportement différent Un binaire client différent est installé S'aligner sur la même build

Ceci n'est pas un défaut dans le flux de travail. C'est le flux de travail qui fait exactement ce qu'il devrait faire.

Échecs de construction et dérive de l'équipe

Lorsque les constructions échouent, la cause racine est souvent l'une de ces :

  • Incohérence de dépendance : Une version de package ne correspond pas à celle du projet.
  • Assumptions de plugins natives : Un plugin de configuration s'attend à ce que le projet soit configuré.
  • La confusion des informations d'identification : La signature ou l'accès à un compte n'est pas cohérent au sein de l'équipe.
  • Les attentes locales obsolètes : Quelqu'un suppose qu'une mise à jour fraîche n'est pas nécessaire lorsque c'est le cas.

Capgo's article sur les problèmes et les solutions de mise à jour en direct courants pour les développeurs est une lecture supplémentaire utile pour la partie de lancement de ce problème. Leçon identique, pile différente : de nombreux « bugs d'application » sont en réalité des bugs de livraison, d'environnement ou d'alignement de version.

Le client de développement Expo fonctionne le mieux lorsque l'équipe traite la fiabilité de l'environnement comme une partie de l'ingénierie. Et pas comme une afterthought. Une fois que vous faites cela, la configuration devient prévisible, et c'est ce que vous voulez de la mise en œuvre de mobile.


Si votre équipe livre également des applications Capacitor et a besoin d'une façon contrôlée de livrer des mises à jour JavaScript, d'actifs et de configurations sans attendre la revue de l'App Store, Capgo est une option à évaluer. Il fournit des mises à jour en direct, des contrôles de déploiement et des intégrations CI/CD pour les workflows Capacitor et Electron.

Mises à jour en temps réel pour les applications Capacitor

Lorsqu'une bug de la couche web est en direct, expédiez la correction par Capgo au lieu d'attendre des jours pour l'approbation de la boutique. Les utilisateurs reçoivent l'update en arrière-plan tandis que les changements natifs restent dans la voie de revue normale.

Commencez dès maintenant

Dernières actualités de notre Blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile vraiment professionnelle.