This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Picker

A single-selection input with menu and wheel appearances.

Android
iOS
Web
Included in Expo Go
Recommended version:
~56.0.26

Picker is a single-selection input. You can use <Picker.Item label value /> children to declare options so that the parent Picker reads them and renders a platform-appropriate dropdown or rotor.

The universal Picker is independent of @expo/ui/community/picker, which remains a compat shim for @react-native-picker/picker. Prefer this universal Picker for new code unless you specifically need the RN-Picker API surface.

Installation

Terminal
- npx expo install @expo/ui
- yarn expo install @expo/ui
- pnpm expo install @expo/ui
- bun expo install @expo/ui

If you are installing this in an existing React Native app, make sure to install expo in your project.

Usage

PickerMenuExample.tsx
import { useState } from 'react'; import { Host, Row, Picker, Spacer, Text } from '@expo/ui'; const FLAVOURS = [ { label: 'Vanilla', value: 'vanilla' }, { label: 'Chocolate', value: 'chocolate' }, { label: 'Strawberry', value: 'strawberry' }, ]; export default function PickerMenuExample() { const [value, setValue] = useState('vanilla'); return ( <Host style={{ flex: 1 }}> <Row alignment="center" spacing={12} style={{ padding: 16 }}> <Text>Flavour:</Text> <Spacer flexible /> <Picker selectedValue={value} onValueChange={setValue}> {FLAVOURS.map(f => ( <Picker.Item key={f.value} label={f.label} value={f.value} /> ))} </Picker> </Row> </Host> ); }

Wheel appearance

appearance="wheel" renders an inline scrollable rotor on iOS. On Android and web, this falls back to the platform's default dropdown (Material 3 doesn't ship a wheel-style picker).

PickerWheelExample.tsx
import { useState } from 'react'; import { Host, Column, Picker } from '@expo/ui'; const FLAVOURS = [ { label: 'Vanilla', value: 'vanilla' }, { label: 'Chocolate', value: 'chocolate' }, { label: 'Strawberry', value: 'strawberry' }, ]; export default function PickerWheelExample() { const [value, setValue] = useState('chocolate'); return ( <Host style={{ flex: 1 }}> <Column spacing={8} style={{ padding: 16 }}> <Picker selectedValue={value} onValueChange={setValue} appearance="wheel"> {FLAVOURS.map(f => ( <Picker.Item key={f.value} label={f.label} value={f.value} /> ))} </Picker> </Column> </Host> ); }

API

import { Picker } from '@expo/ui';

No API data file found, sorry!