Expo exemples officiels

Bibliothèque officielle d'Expo contenant environ 70 exemples d'intégration (Stripe, Clerk, Supabase, OpenAI, cartes, Reanimated, SQLite, Skia, NativeWind, etc.) pour vous aider à intégrer une bibliothèque ou un service tiers dans une application existante ou à créer un nouveau projet.

Qu'est-ce que Expo exemples officiels ?

Ce skill donne accès à la bibliothèque officielle d'exemples d'Expo, `expo/examples`, qui contient environ 70 projets d'intégration nommés `with-*` (par exemple `with-stripe`, `with-clerk`). Chaque exemple est un projet géré minimaliste (pas de dossiers `ios/` ou `android/`, la configuration native se fait via des plugins de configuration) et se concentre sur une seule bibliothèque ou service. Il est conçu pour être utilisé comme source d'inspiration et d'adaptation : l'utilisateur a déjà un projet et souhaite intégrer une fonctionnalité ; le skill l'aide à trouver l'exemple correspondant, à en étudier les fichiers clés (README, package.json, app.json, code d'intégration) et à appliquer le modèle d'intégration canonique sans écraser la configuration existante. Il prend également en charge le mode "scaffold" pour créer un nouveau projet directement à partir d'un exemple avec `npx create-expo --example`. Le skill utilise des appels à l'API GitHub (gh) ou des téléchargements bruts pour lister, lire et cloner partiellement les exemples, et insiste sur la fusion non destructive des dépendances, plugins et variables d'environnement.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

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

Documentation

Exemples Expo

expo/examples est la bibliothèque officielle d'Expo contenant environ 70 exemples d'intégration — des répertoires nommés with-<bibliothèque> (par exemple with-stripe, with-maps), chacun construit autour d'une bibliothèque ou d'un service. Ce ne sont pas des applications complètes : ce sont des projets gérés (pas de répertoires ios//android/ — la configuration native se fait via des plugins de configuration), et chacun se résume généralement à un seul écran d'environ 100 à 200 lignes. Utilisez-les pour trouver le modèle d'intégration canonique — l'ensemble des dépendances, les plugins de configuration app.json et le câblage minimal qu'Expo maintient avec le SDK actuel — et adaptez-le à l'application de l'utilisateur. N'espérez pas en tirer une architecture d'application complète.

Consultez un exemple avant d'implémenter une intégration manuellement. (Les types — full-stack, vitrines, démarreurs — sont répertoriés dans ./references/catalog.md.)

Deux modes

  1. Inspiration / adaptation (le plus courant) — l'utilisateur a déjà un projet. Trouvez l'exemple correspondant, lisez ses fichiers clés et appliquez le modèle à son code.
  2. Scaffold — nouveau projet. Créez un projet frais directement à partir de l'exemple.

Flux de travail

1. Trouver le bon exemple

Faites correspondre le besoin de l'utilisateur à un nom d'exemple (par exemple paiements → with-stripe, authentification → with-clerk). ./references/catalog.md est un instantané catégorisé pour un tri rapide — mais il peut prendre du retard, alors vérifiez par rapport à la liste en direct :

# Noms des exemples en direct :
gh api repos/expo/examples/contents --jq '.[] | select(.type=="dir" and (.name|startswith(".")|not)) | .name'
# Alias (renommés) + exemples obsolètes (morts/déplacés) — vérifiez avant de recommander :
gh api repos/expo/examples/contents/meta.json --jq '.content' | base64 -d

meta.json est la source de vérité pour ce qui est renommé ou mort (les exemples obsolètes sont supprimés de l'arbre du dépôt mais toujours listés ici, chacun avec un message). Si un exemple est dans sa carte deprecated, ne le recommandez pas — suivez le message vers le chemin moderne. S'il est dans aliases, utilisez le destination.

2a. Mode inspiration — étudier sans toucher au projet de l'utilisateur

Le cas courant : l'utilisateur a déjà une application et veut voir comment Expo fait quelque chose. Lisez l'exemple comme référence et appliquez les modèles manuellement — ne créez jamais un exemple par-dessus son projet.

D'abord, listez l'intégralité de l'exemple en un seul appel. Le code d'intégration est souvent imbriqué (par exemple, les routes serveur de Stripe se trouvent dans app/api/), donc un listing à un seul niveau omet les fichiers importants :

gh api 'repos/expo/examples/git/trees/master?recursive=1' \
  --jq '.tree[].path | select(startswith("with-stripe/"))'

Lisez ensuite les fichiers à forte valeur en premier : README.md (configuration) → package.json (dépendances) → app.json (plugins de configuration / permissions) → le code d'intégration révélé par le manifeste → .env (secrets requis). Pour chaque fichier :

gh api repos/expo/examples/contents/with-stripe/utils/stripe-server.ts --jq '.content' | base64 -d
# Pas de gh ? URL brute (la branche est master) :
curl -s https://raw.githubusercontent.com/expo/examples/master/with-stripe/utils/stripe-server.ts

Vous lisez plus de deux fichiers ? De nombreuses intégrations sont réparties entre les routes serveur, un fournisseur client et la configuration (c'est le cas de Stripe). Évitez les appels fichier par fichier — extrayez l'intégralité de l'exemple dans un répertoire jetable/ignoré par git (pas le projet de l'utilisateur) et lisez-le librement avec Grep/Read, puis appliquez manuellement :

npx degit expo/examples/with-stripe /tmp/expo-ref/with-stripe   # copie propre, sans historique git
# alternative sans degit (sparse-checkout, sans clone complet ~64 Mo) :
git clone --depth 1 --filter=blob:none --sparse https://github.com/expo/examples.git /tmp/expo-ref/examples \
  && (cd /tmp/expo-ref/examples && git sparse-checkout set with-stripe)

Lisez à partir de là avec Grep/Read ; supprimez le répertoire temporaire une fois terminé.

2b. Mode scaffold — nouveau projet à partir d'un exemple

npx create-expo --example with-stripe   # forme courte :  npx create-expo -e with-stripe
bun create expo --example with-stripe    # avec bun

3. Adapter à l'application de l'utilisateur — sans destruction (critique)

Quand l'utilisateur a déjà une application, n'ajoutez que ce que l'exemple introduit ; ne remplacez jamais sa configuration existante.

  • Alignez les versions — ne copiez pas les versions figées. Les exemples sont basés sur le dernier SDK, donc leurs versions package.json figées ne correspondront pas à un projet plus ancien. Ajoutez seulement les dépendances manquantes avec npx expo install <paquet> (qui résout les versions correctes pour le SDK) au lieu de copier les versions exactes.
  • Fusionnez la configuration, ne la remplacez pas. Ajoutez uniquement les plugins et permissions app.json/app.config.* que l'exemple introduit et que l'utilisateur n'a pas — conservez son bloc de configuration existant intact.
  • Portez le code d'intégration.
  • Recréez les variables d'environnement à partir du fichier .env de l'exemple — il contient des espaces réservés, jamais de secrets réels.

Terminé lorsque le code d'intégration est porté et que chaque dépendance, plugin de configuration, permission et variable d'environnement nécessaire est pris en compte dans l'application de l'utilisateur — pas quand elle semble simplement câblée.

Points d'attention

  • La branche par défaut est master, pas main (important pour les URL brutes et le sparse checkout).
  • Déploiement en un clic. Chaque exemple a une URL de lancement : https://launch.expo.dev/?github=https://github.com/expo/examples/tree/master/<exemple>.

Compétences connexes

  • Composants d'interface utilisateur natifs (package @expo/ui) → expo-ui
  • Style et écrans à l'apparence native → expo-native-ui
  • Navigation et routage → expo-router
  • Création d'un module natif → expo-module
  • Mise à jour du SDK avant d'adopter un exemple basé sur le dernier SDK → expo-upgrade

Références

  • ./references/catalog.md — instantané catégorisé de la bibliothèque d'exemples pour un tri rapide.

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-examples" "<retour actionnable>"

Ne soumettez un retour que lorsque vous avez quelque chose de spécifique et actionnable à 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û reprendre une tâche Expo, chargez la compétence expo-skill-feedback et suivez son flux d'évaluation de candidat 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-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-overview

Framework (OSS). Entry point and router for every Expo or EAS task. Load this skill first — before writing code and before choosing another expo-* / eas-* skill — when the request, PRD, or spec mentions Expo, EAS, Expo Go, or an expo-* package, or the project has an `expo` dependency in `package.json`. Within that gate it also covers app specs and designs to implement (tabs, stacks, maps, lists, navigation, building from a screenshot), and phrasings like 'implement a mobile app', 'make my app look native', 'add navigation', 'fetch some data', 'upgrade my SDK', 'add Expo to my existing native app', 'ship to the App Store', or 'I'm new to Expo, where do I start'. A fully specified request (SDK pinned, libraries named, layout given) still routes through here — the shared setup rules still apply. Do NOT load it when neither signal is present: a bare React Native project with no `expo` dependency is not Expo work. Detects the real goal, routes to the right expo-* / eas-* skill, and owns the shared setup rules.

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