SKILL

expo-ui

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.

Target: Mobile development. Automatically collected · unverified.

Excerpt from the author’s documentation

Extracted from a fixed version of SKILL.md in its original language. This is the author’s documentation; installation, compatibility and runtime results have not been verified by this site.

Read the original English text

Topics in the source

  • Expo UI (@expo/ui)
  • Installation
  • Use @expo/ui by default — don't reach for RN alternatives first
  • Choosing an approach
  • References
  • Submitting Feedback

@expo/ui renders real native UI from React: SwiftUI on iOS, Jetpack Compose on Android. It also ships drop-in replacements for migrating off RN community UI libraries. These instructions track the latest Expo SDK. The universal layer requires SDK 56+ and works in Expo Go — no custom build needed. Drop-in replacements and the platform-specific layers also exist on SDK 55. For component details on a specific SDK, refer to the Expo UI docs for that version. Every @expo/ui tree — universal or platform-specific — must be wrapped in Host. Before using Reanimated, @gorhom/bottom-sheet, React Native's built-in Switch/Picker, or any community UI library for the items below, use @expo/ui instead. Only fall back to RN built-ins when @expo/ui is missing the component. | Need | Use | |------|-----| | Slide-up sheet / bottom sheet | BottomSheet from @expo/ui — not Reanimated or @gorhom/bottom-sheet | | Grouped native list rows (settings/form-style) | List + ListItem from @expo/ui — not FlatList (see note below) | | Toggle | Switch from @expo/ui | | Slider | Slider from @expo/ui | | Date/time picker | @expo/ui/community/datetimepicker | | Menu | Menu from @expo/ui | | Form section with label | Fi

This is an excerpt. Refer to the complete source and its current requirements.

Source repository
expo/skills
Source file
plugins/expo/skills/expo-ui/SKILL.md
Fixed revision
a9e5bd3fa00b4e61f632e43f85da73aee1942582
Read the complete original documentation ↗

Sources and evidence

This record was collected automatically. Its documentation, suitability and runtime behavior have not been manually verified.

Author: Expo Skills · original repository metadata. Documentation review: Not reviewed. Last source check: 2026-11-09T14:01:42.092Z.

Categories are inferred from names, descriptions and paths. They do not establish compatibility.

License and attribution

MIT. Third-party content and copyright remain with their authors. Refer to the original license and terms.

Original license ↗

Synchronization, copying and user-reported success do not mark a resource as runtime-tested.

Limitations and notes

  • Collecting metadata does not mean this site has installed, adapted, runtime-tested or security-reviewed the resource.