This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
List
A virtualized vertical container of rows, paired with a tappable ListItem primitive.
Android
iOS
Web
Included in Expo Go
Recommended version:
~56.0.26
List provides a virtualized vertical container of rows, typically populated with ListItem children. It provides the platform-native chrome (separators, inset styling, pull-to-refresh). ListItem is a tappable row with leading/trailing/supportingText slots.
List does not lazily render rows yet: React creates every row up front, so large lists can be slow to mount. We are working on improving this. For large lists, we recommend FlashList or Legend List.
ListItem accepts leading, trailing, and supportingText shorthand props for the common case. Pass a ReactNode for any of them when richer content is needed.
ListItemSlotsExample.tsx
import{Host,Icon,List,ListItem}from'@expo/ui';constCHEVRON=Icon.select({
ios:'chevron.right',
android:require('@expo/material-symbols/chevron_right.xml'),});exportdefaultfunctionListItemSlotsExample(){return(<Hoststyle={{ flex:1}}><List><ListItemonPress={()=>{}}trailing={<Iconname={CHEVRON}size={14}color="gray"/>}supportingText="Secondary line below the headline">
Profile
</ListItem><ListItemonPress={()=>{}}trailing={<Iconname={CHEVRON}size={14}color="gray"/>}>
Settings
</ListItem></List></Host>);}
Compound slot children
For full control over slot content, use the compound API: <ListItem.Leading>, <ListItem.Trailing>, and <ListItem.Supporting>. Anything not wrapped in a slot becomes the headline.