expo-ui

Par expo · skills

Créez une UI native avec le package `@expo/ui` : du vrai SwiftUI sur iOS et du Jetpack Compose sur Android, rendu depuis React dans une application Expo ou React Native. Couvre les composants universels cross-platform (`Host`, `Column`, `Row`, `Button`, `Text`, `List`, et plus, importés depuis `@expo/ui`), les remplaçants drop-in pour les bibliothèques communautaires React Native populaires (`BottomSheet`, `DateTimePicker`, `Slider`, `Menu`, etc.), ainsi que les arbres et modificateurs spécifiques à chaque plateforme via SwiftUI (`@expo/ui/swift-ui`) et Jetpack Compose (`@expo/ui/jetpack-compose`). À utiliser lors de l'ajout ou de la révision d'arbres `Host`/`RNHostView` avec `@expo/ui`, pour construire une UI à rendu natif là où les composants React Native standard sont insuffisants (listes avec actions de glissement et sections, formulaires de paramètres avec des bascules, menus, sheets, pickers, sliders), pour choisir entre composants universels et spécifiques à une plateforme, ou pour remplacer une bibliothèque UI communautaire RN par un équivalent natif `@expo/ui`. Non applicable aux modules natifs personnalisés, à la navigation Expo Router, à Reanimated, ou à la récupération de données.

npx skills add https://github.com/expo/skills --skill expo-ui

Expo UI (@expo/ui)

@expo/ui rend une véritable interface native depuis React : SwiftUI sur iOS, Jetpack Compose sur Android. Commencez par ses composants universels (un seul arbre pour iOS, Android et web) et passez aux couches spécifiques à chaque plateforme (SwiftUI/Jetpack Compose) uniquement quand la couche universelle ne suffit pas. Elle propose aussi des remplaçants clés en main pour migrer depuis les bibliothèques d'UI de la communauté React Native.

Ces instructions suivent le dernier Expo SDK. La couche universelle nécessite SDK 56+. Les remplaçants clés en main et les couches spécifiques à chaque plateforme existent aussi sur SDK 55. Pour les détails des composants sur un SDK particulier, consultez la documentation Expo UI pour cette version.

Installation

npx expo install @expo/ui

Sur SDK 56, @expo/ui fonctionne dans Expo Go, donc npx expo start l'exécute directement — aucune build personnalisée requise. Sur les anciens SDKs, créez d'abord un dev client (npx expo run:ios / npx expo run:android).

Chaque arbre @expo/ui — universel ou spécifique à une plateforme — doit être enveloppé dans Host.

Choisir une approche (lisez d'abord ceci)

Parcourez cette liste et arrêtez-vous au premier niveau qui répond à votre besoin :

  1. Composants universels — commencez ici. Importez depuis la racine @expo/ui. Un seul arbre de composants s'exécute sans modification sur iOS, Android et web depuis une seule source (Compose sur Android, SwiftUI sur iOS, react-native-web/react-dom sur web). Aucune séparation de fichiers par plateforme. → ./references/universal.md

  2. Spécifiques à la plateforme (SwiftUI / Jetpack Compose). Importez depuis @expo/ui/swift-ui ou @expo/ui/jetpack-compose. Utilisez uniquement quand la couche universelle manque d'un composant ou d'un modificateur dont vous avez besoin, ou quand vous avez besoin d'un comportement ou d'une optimisation spécifique à la plateforme. Inconvénient : vous écrivez deux arbres et les séparez en fichiers .ios.tsx / .android.tsx (ou avec une branche sur Platform.OS) — plus de code à maintenir. → ./references/swift-ui.md et ./references/jetpack-compose.md

Vous utilisez déjà une bibliothèque d'UI de la communauté RN ? @expo/ui propose aussi des remplaçants clés en main — des substituts API-compatibles pour les bibliothèques populaires (@gorhom/bottom-sheet, @react-native-community/datetimepicker, et plus), importés depuis @expo/ui/community/<name>. C'est un chemin de migration latéral pour remplacer une dépendance existante, pas une étape dans la décision universel-vs-plateforme ci-dessus. → ./references/drop-in-replacements.md

Références

Consultez ces ressources au besoin :

references/
  universal.md             Composants universels @expo/ui et quand les utiliser (SDK 56+)
  drop-in-replacements.md  Remplaçants API-compatibles pour les bibliothèques d'UI de la communauté RN
  swift-ui.md              Interface utilisateur iOS spécifique à la plateforme : composants @expo/ui/swift-ui, modificateurs, RNHostView, useNativeState
  jetpack-compose.md       Interface utilisateur Android spécifique à la plateforme : composants @expo/ui/jetpack-compose, modificateurs, caveat LazyColumn, icônes, useNativeState

Skills similaires