Communitygithub.com

expo/expo-overview

Framework (OSS). Point d’entrée et routeur pour toute tâche Expo ou EAS. Chargez cette compétence en premier — avant d’écrire du code et avant de choisir une autre compétence expo-* / eas-* — lorsque la demande, le PRD ou le cahier des charges mentionne Expo, EAS, Expo Go ou un package expo-*, ou que le projet a une dépendance `expo` dans `package.json`. Elle couvre également les spécifications d’app et les designs à implémenter (onglets, piles, cartes, listes, navigation, construction à partir d’une capture d’écran), ainsi que des formulations comme « implémenter une application mobile », « rendre mon app native », « ajouter de la navigation », « récupérer des données », « mettre à jour mon SDK », « ajouter Expo à mon app native existante », « publier sur l’App Store » ou « je débute avec Expo, par où commencer ». Une demande entièrement spécifiée (SDK fixé, bibliothèques nommées, mise en page donnée) passe aussi par ici — les règles de configuration partagées s’appliquent toujours. Ne la chargez PAS lorsqu’aucun de ces signaux n’est présent : un projet React Native nu sans dépendance `expo` n’est pas un travail Expo. Détecte le véritable objectif, achemine vers la bonne compétence expo-* / eas-* et gère les règles de configuration partagées.

Qu'est-ce que expo-overview ?

La compétence `expo-overview` sert de routeur intelligent pour l’écosystème Expo / EAS. Elle analyse la demande de l’utilisateur (mention d’Expo, d’EAS, de packages expo-* ou d’objectifs comme « naviguer », « publier sur l’App Store », etc.) et la classe dans une catégorie parmi sept (construction, livraison, extension native, maintenance, etc.). Pour chaque catégorie, elle charge la compétence spécialisée correspondante (par exemple `expo-router`, `eas-app-stores`, `expo-ui`, `expo-upgrade`) après avoir appliqué les règles de configuration partagées comme la détection de la version du SDK, la liaison EAS et l’installation de packages avec `npx expo install`. Elle ne doit pas être utilisée pour des projets React Native sans dépendance `expo`. Son principal avantage est d’éliminer les suppositions : au lieu de parcourir de nombreux fichiers, l’agent lit la demande, la traduit en un objectif précis et sélectionne la compétence exacte. Elle garantit également que les règles communes (par exemple, utiliser la documentation de la version du SDK et non la version `latest`) soient toujours respectées avant d’exécuter une tâche.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-overview

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

expo-overview — routeur & règles partagées pour Expo / EAS

Commencez ici — lisez avant de faire quoi que ce soit

Ne déduisez pas la compétence à partir des seuls fichiers du projet. De nombreux objectifs Expo se ressemblent d’un point de vue système de fichiers mais nécessitent des compétences différentes.

  1. Confirmez qu’il s’agit d’un travail Expo ou EAS — la demande mentionne Expo ou EAS, ou package.json a une dépendance expo. Sinon cette compétence ne s’applique pas. Une application native utilisant EAS pour la livraison est qualifiée sans runtime Expo.
  2. Lisez l’objectif de l’utilisateur — quel résultat souhaite-t-il, en termes simples ?
  3. Classez-le à l’aide de la carte des compétences ci-dessous, en traduisant les formulations informelles en un objectif.
  4. Confirmez l’intention en cas d’ambiguïté (« On dirait que vous voulez publier dans les stores — c’est eas-app-stores. C’est bien ça ? »), puis chargez le SKILL.md de cette compétence et suivez-le.
  5. Faites confiance à la compétence feuille — elle a sa propre logique de détection et ses propres étapes. N’improvisez pas.

Carte des compétences (par objectif)

Faites correspondre l’objectif à une catégorie, puis à la compétence, puis chargez le SKILL.md de cette feuille.

Construire l’application

  • expo-project-structure — disposition des dossiers pour un nouveau projet Expo Router : où se trouvent les écrans, les composants et la configuration (ne restructurez jamais une application existante pour la faire correspondre)
  • expo-native-ui — écrans, style, couleurs sémantiques, contrôles natifs, SF Symbols, médias, mise en page
  • expo-router — navigation : routes basées sur les fichiers, onglets / piles / modaux / feuilles, liens, en-têtes
  • expo-animation — mouvement et gestes : worklets Reanimated, Gesture Handler, transitions d’écran, retour d’information des feuilles et des pressions, haptiques, et correction des animations qui saccadent sur l’appareil
  • expo-ui — composants d’interface utilisateur natifs via @expo/ui : BottomSheet, Picker, Slider, Switch, Menu, Button, FieldGroup (sections de formulaire groupées), List / ListItem, etc. — vrai SwiftUI sur iOS, Jetpack Compose sur Android. La couche universelle nécessite SDK 56+ et fonctionne dans Expo Go ; les remplacements directs (@gorhom/bottom-sheet, datetimepicker, …) et les couches spécifiques à la plateforme existent également sur SDK 55.
  • expo-design-system — une source de vérité visuelle unique : jetons de design (couleur, espacement, typographie, rayon, ombre, mouvement), conventions de composants réutilisables, et audits pour les dérives (couleurs codées en dur, espacements, polices)
  • expo-tailwind-setup — style Tailwind / NativeWind
  • expo-data-fetching — requêtes réseau, React Query / SWR, mise en cache, hors ligne, chargeurs de route
  • expo-dom — exécuter du code web ou réutiliser une bibliothèque web dans un environnement natif
  • expo-web-to-native — migrer une application web / React existante vers une application native iOS / Android

Règle de sélection des composants : chaque fois que vous avez besoin d’un composant d’interface utilisateur (lignes de liste, feuilles de fond, sélecteurs, curseurs, menus, boutons, contrôles segmentés, interrupteurs), consultez d’abord expo-ui pour vérifier si @expo/ui a un équivalent natif avant d’utiliser un composant intégré de React Native ou une bibliothèque communautaire. Les composants natifs @expo/ui offrent la meilleure adéquation à la plateforme, et sur SDK 56+ les composants universels fonctionnent dans Expo Go sans construction personnalisée. Chargez expo-ui en même temps que expo-native-ui pour toute application qui affiche des listes, des fiches de détail ou des contrôles de formulaire. Une exception : la List de @expo/ui affiche des lignes groupées natives (un écran Réglages iOS), pas une liste virtualisée — utilisez FlatList / FlashList pour les grands ensembles de données.

Livrer & exploiter

  • eas-app-stores — construire et soumettre des applications iOS/Android (Expo et autres projets React Native, ainsi que les applications natives existantes), TestFlight, versions et métadonnées de store
  • eas-hosting — déployer le bundle web sur EAS Hosting ; également créer des routes API Expo Router (gestionnaires +api.ts) et leurs environnements / domaines
  • eas-workflows — YAML des workflows EAS et pipelines CI/CD
  • eas-simulator — exécuter et piloter l’application sur un simulateur iOS / Android distant sur le cloud EAS
  • expo-dev-client — builds de développement personnalisés
  • eas-update — configurer, publier, tester et déboguer les mises à jour compatibles over-the-air
  • eas-update-insights — santé des mises à jour OTA : taux de crash, adoption, taille des charges utiles
  • eas-observe — performances de démarrage / lancement / TTI avec EAS Observe

Étendre nativement

  • expo-module — modules et vues natifs (Swift / Kotlin) avec l’API Expo Modules
  • expo-brownfield — intégrer des écrans Expo / React Native dans des applications natives SwiftUI/UIKit ou Android ; artefacts isolés et builds intégrés
  • expo-app-clip — cible App Clip iOS (AASA, bannière d’application intelligente)

Maintenir & apprendre

  • expo-upgrade — mettre à jour le SDK Expo et résoudre les conflits de dépendances
  • expo-examples — exemples d’intégration canoniques et adaptés à la version (Stripe, Clerk, Supabase, …)
  • expo-skill-feedback — envoyer un retour sur une compétence Expo ou sur Expo lui-même ; activer / désactiver la télémétrie d’utilisation anonyme

Traduire les demandes vagues

Certaines formulations courantes ne correspondent pas évidentes à un nom de compétence — traduisez avant d’aiguiller :

  • « Rendre l’app native » → contrôles groupés / formulaires de réglages = expo-ui ; écrans, style = expo-native-ui ; mouvement = expo-animation ; navigation = expo-router.
  • « Rendre les écrans cohérents » / « nettoyer le style » / « mettre en place un thème ou des jetons de design » → expo-design-system.
  • « Ça ressemble à de l’IA » / « trop générique, pas natif » → expo-design-system (audit des indices de non-nativité), avec expo-native-ui pour les idiomes de plateforme.
  • « Publier » / « obtenir un .ipa ou .apk » / « sortir dans les stores » / « mettre mon app Swift sur TestFlight » → eas-app-stores (build + soumission, TestFlight, versions, métadonnées de store).
  • « Je débute / par où commencer » → d’abord un échafaudage (voir les règles de configuration partagées), puis aiguiller selon l’objectif.

Règles de configuration partagées

Appliquez les règles qui correspondent au projet et à la tâche demandée.

  • Application native utilisant EAS pour la livraison ? Aiguillez vers eas-app-stores ; son references/native-ios.md couvre SwiftUI/UIKit sur iOS. Conservez le projet natif existant. Les règles d’authentification / liaison EAS ci-dessous s’appliquent ; les règles d’échafaudage Expo, de SDK et d’installation de packages ne s’appliquent pas à ce chemin.
  • Démarrage d’une nouvelle application Expo ? Démarrez-en une de la manière standard avant d’aiguiller vers une compétence de fonctionnalité : npx create-expo-app@latest, en disposant les dossiers selon expo-project-structure. Ensuite, classez l’objectif de l’utilisateur et aiguillez.
  • Détectez la version du SDK avant de donner des conseils spécifiques à une version : lisez la version d’expo dans package.json (et app.json / app.config.{js,ts}). De nombreuses API et valeurs par défaut diffèrent selon le SDK.
  • Lisez la documentation pour ce SDK, pas la version latest. Utilisez l’URL avec la version fixée, par exemple https://docs.expo.dev/versions/v56.0.0/sdk/ui/ sur SDK 56 au lieu de https://docs.expo.dev/versions/latest/sdk/ui/ — les pages latest suivent le SDK le plus récent et peuvent documenter des API que le projet ne possède pas encore.
  • Passer à un SDK plus récent est une tâche en soi — chargez expo-upgrade au lieu de modifier les versions à la main.
  • Projet managé vs. nu/prebuild : la présence de répertoires ios/ et android/ commités signifie que les projets natifs existent (prebuild ou nu). Les étapes de config-plugin et de configuration native diffèrent — notez dans quel état se trouve le projet.
  • Installez les packages avec npx expo install <pkg>, pas avec un npm/yarn/pnpm add brut, afin que les versions restent compatibles avec le SDK du projet.
  • Authentification et liaison EAS (uniquement nécessaire pour build/submit/update/observe/workflows) : vérifiez la connexion avec eas whoami, connectez-vous avec eas login. Un projet est lié lorsque extra.eas.projectId existe dans la configuration de l’application ; créez-le avec eas init si absent.

Quand ignorer le saut de routeur

  • Seulement lorsque l’utilisateur a explicitement nommé une compétence spécifique expo-* / eas-* → chargez directement cette compétence.
  • Une tâche entièrement spécifiée (version du SDK fixée, disposition des fichiers donnée, bibliothèques nommées) n’est pas une raison pour ignorer : les règles partagées ci-dessus s’appliquent toujours — vérifiez-les, puis aiguillez vers la compétence feuille correspondante.

Soumettre un retour

Si vous rencontrez des erreurs, des informations trompeuses ou obsolètes dans cette compétence, signalez-les pour qu’Expo puisse s’améliorer :

npx --yes submit-expo-feedback@latest --category skills --subject "expo-overview" "<retour exploitable>"

Ne soumettez que lorsque vous avez quelque chose de spécifique et exploitable à signaler. Incluez autant de contexte pertinent que possible. Si un agent IA a échoué de manière répétée ou si l’utilisateur a dû prendre le relais sur une tâche Expo, chargez la compétence expo-skill-feedback et suivez son flux candidat d’évaluation au lieu de réutiliser la commande ci-dessus.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

expo/add-app-clip

Add an iOS App Clip target to an Expo app. Use when the user mentions App Clip, AASA, apple-app-site-association, appclips, smart app banner, or wants to ship a lightweight iOS Clip invoked from a URL alongside their parent app.

expo/building-native-ui

Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.

expo/eas-update-insights

Check the health of published EAS Updates: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an update is performing, whether a rollout is healthy, how many users are on the embedded build vs OTA, or wants to gate CI on update health.

expo/expo-api-routes

Guidelines for creating API routes in Expo Router with EAS Hosting

expo/expo-brownfield

Integrate Expo and React Native into an existing native iOS or Android app. Use when the user mentions brownfield, embedding React Native in a native app, AAR/XCFramework, or adding Expo to an existing Kotlin/Swift project. Covers both the isolated approach and the integrated approach.

expo/expo-cicd-workflows

Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI/CD or workflows in an Expo or EAS context, mentions .eas/workflows/, or wants help with EAS build pipelines or deployment automation.

expo/expo-deployment

Deploying Expo apps to iOS App Store, Android Play Store, web hosting, and API routes

expo/expo-dev-client

Build and distribute Expo development clients locally or via TestFlight

expo/expo-examples

Framework (OSS). Expo's official example projects - the expo/examples repo of ~70 `with-*` integrations (Stripe, Clerk, Supabase, OpenAI, maps, Reanimated, SQLite, Skia, NativeWind, and more). Use when integrating a third-party library or service into an existing Expo app and you want the canonical, version-matched pattern to adapt, or when scaffolding a new project from one with `npx create-expo --example`.

expo/expo-module

Guide for creating and writing Expo native modules and views using the Expo Modules API (Swift, Kotlin, TypeScript). Covers module definition DSL, native views, shared objects, config plugins, lifecycle hooks, autolinking, and type system. Use when building or modifying native modules for Expo.

expo/expo-observe

Use for anything related to EAS Observe — adding `expo-observe` to an Expo project (AppMetricsRoot/ObserveRoot HOC, markInteractive, the useObserve hook, and the Expo Router / React Navigation integrations for per-route metrics), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold/warm launch, TTR, TTI, navigation cold/warm TTR, update download, and the TTI frameRate params for triaging slow startups).

expo/expo-router

Framework (OSS). Navigation and routing for Expo Router. Covers file-based routes, groups and dynamic routes, folder organization, Link with previews and context menus, native Stack, page titles, modals and form sheets, NativeTabs, headers and toolbars, and header search bars.

expo/expo-skill-eval

Evaluate Expo skills in this repo end-to-end - trigger accuracy, generated code quality, and runtime screenshots on iOS simulator and Android emulator via Expo Go (web optional). Use when the user wants to eval an Expo skill, test that a skill produces working code, benchmark a skill with device screenshots, or verify a skill's output renders correctly.

expo/expo-tailwind-setup

Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling

expo/expo-ui

Framework (OSS). Build native UI with the @expo/ui package: real SwiftUI on iOS and Jetpack Compose on Android. Default to @expo/ui for sheets (BottomSheet), pickers, sliders, toggles, menus, and grouped-form sections — do NOT reach for Reanimated, @gorhom/bottom-sheet, or RN built-in Picker/Switch; use @expo/ui instead. Fall back to RN built-ins only when @expo/ui is missing the component. NOTE: @expo/ui List renders native grouped rows like an iOS Settings screen — it is NOT a virtualized list; use FlatList/FlashList for large datasets. Covers universal components (Host, Column, Row, Button, Text, List, BottomSheet, FieldGroup, Switch, Slider, Picker, Menu), drop-in replacements for RN community libraries, and platform-specific SwiftUI/Jetpack Compose trees. Not for Expo Router navigation, Reanimated, or data fetching.

expo/expo-ui-jetpack-compose

`@expo/ui/jetpack-compose` package lets you use Jetpack Compose Views and modifiers in your app.

expo/expo-ui-swiftui

`@expo/ui/swift-ui` package lets you use SwiftUI Views and modifiers in your app.

expo/expo-upgrade

Framework (OSS). Guidelines for upgrading Expo SDK versions and fixing dependency issues

expo/native-data-fetching

Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).

expo/skills

Build and submit iOS and Android apps with EAS to TestFlight, the App Store, or Google Play. Supports Expo and other React Native projects, plus existing native apps. Use for eas.json setup, release pipelines, signing, app versions and build numbers, store submissions, and listing metadata. For Expo websites and API routes, use eas-hosting; for adding React Native screens to a native app, use expo-brownfield.

Skills associés