This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
This is documentation for the next SDK version. For up-to-date documentation, see the latest version (SDK 57).
Expo UI
A set of components that allow you to build UIs directly with Jetpack Compose and SwiftUI from React.
Android
iOS
tvOS
Included in Expo Go
@expo/ui is a set of native input components that allows you to build fully native interfaces with Jetpack Compose and SwiftUI. It aims to provide the commonly used features and components that a typical app will need.
Available platforms
Components are available for the following platforms:
- Jetpack Compose: Build native Android interfaces with Jetpack Compose components
- SwiftUI: Build native iOS interfaces with SwiftUI components
- Universal: Cross-platform components that run on Android, iOS, and web from a single source
Drop-in replacements
See Drop-in replacements for API-compatible replacements for popular React Native community libraries.
Available components
Jetpack Compose








































Host












Modifiers








RNHostView


























useNativeState
SwiftUI
AccessoryWidgetBackground
























Group
Host






LazyHStack
LazyVStack






Modifiers
Namespace








RNHostView










SwipeActions








useNativeState




Drop-in replacements
| Component | Description |
|---|---|
BottomSheet | A bottom sheet compatible with @gorhom/bottom-sheet. |
DateTimePicker | A date and time picker compatible with @react-native-community/datetimepicker. |
MaskedView | A masked view compatible with @react-native-masked-view/masked-view. |
Menu | A menu compatible with @react-native-menu/menu. |
PagerView | A horizontally paged view compatible with react-native-pager-view. |
Picker | A picker compatible with @react-native-picker/picker. |
SegmentedControl | A segmented control compatible with @react-native-segmented-control/segmented-control. |
Slider | A slider compatible with @react-native-community/slider. |
Universal
| Component | Description |
|---|---|
BottomSheet | A modal sheet that slides up from the bottom of the screen. |
Button | A pressable button with multiple visual variants. |
Checkbox | A toggle control that represents a checked or unchecked state. |
Collapsible | A labelled tappable header that toggles visibility of its content. |
Column | A vertical layout container for universal @expo/ui components. |
FieldGroup | A scrollable container of grouped settings-style rows. |
Host | A cross-platform Host component that wraps universal @expo/ui content. |
Icon | A platform-native icon — SF Symbol on iOS, Material Symbol on Android. |
List | A virtualized vertical container of rows, paired with a tappable ListItem primitive. |
Picker | A single-selection input with menu and wheel appearances. |
RNHostView | A cross-platform component for hosting React Native views inside @expo/ui views. |
Row | A horizontal layout container for universal @expo/ui components. |
ScrollView | A scrollable container that supports vertical or horizontal scrolling. |
Slider | A control for selecting a value from a continuous or stepped range. |
Spacer | A layout spacer that produces empty space between siblings. |
Switch | A toggle control that switches between on and off states. |
Text | A component for displaying styled text content. |
TextInput | A text input backed by native SwiftUI and Jetpack Compose components, with a React Native-compatible API. |