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

AlertDialog

A Jetpack Compose AlertDialog component for displaying native alert dialogs.

Android
Included in Expo Go
Recommended version:
~56.0.26

Expo UI AlertDialog matches the official Jetpack Compose AlertDialog API. Content is provided via slot sub-components (AlertDialog.Title, AlertDialog.Text, AlertDialog.ConfirmButton, AlertDialog.DismissButton, AlertDialog.Icon) that map directly to Compose's slot parameters.

Material 3 alert dialog with title, supporting text, and Cancel/Discard buttonsMaterial 3 alert dialog with title, supporting text, and Cancel/Discard buttons

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

Basic alert dialog

BasicAlertDialogExample.tsx
import { useState } from 'react'; import { Host, AlertDialog, Button, TextButton, Text } from '@expo/ui/jetpack-compose'; export default function BasicAlertDialogExample() { const [visible, setVisible] = useState(false); return ( <Host matchContents> <Button onClick={() => setVisible(true)}> <Text>Show Alert</Text> </Button> {visible && ( <AlertDialog onDismissRequest={() => setVisible(false)}> <AlertDialog.Title> <Text>Confirm Action</Text> </AlertDialog.Title> <AlertDialog.Text> <Text>Are you sure you want to proceed?</Text> </AlertDialog.Text> <AlertDialog.ConfirmButton> <TextButton onClick={() => setVisible(false)}> <Text>Confirm</Text> </TextButton> </AlertDialog.ConfirmButton> <AlertDialog.DismissButton> <TextButton onClick={() => setVisible(false)}> <Text>Cancel</Text> </TextButton> </AlertDialog.DismissButton> </AlertDialog> )} </Host> ); }

Custom colors

CustomColorsExample.tsx
import { useState } from 'react'; import { Host, AlertDialog, Button, TextButton, Text } from '@expo/ui/jetpack-compose'; export default function CustomColorsExample() { const [visible, setVisible] = useState(false); return ( <Host matchContents> <Button onClick={() => setVisible(true)}> <Text>Show Alert</Text> </Button> {visible && ( <AlertDialog onDismissRequest={() => setVisible(false)} colors={{ containerColor: '#1E1E2E', titleContentColor: '#CDD6F4', textContentColor: '#BAC2DE', }}> <AlertDialog.Title> <Text>Custom Dialog</Text> </AlertDialog.Title> <AlertDialog.Text> <Text>This dialog uses custom colors.</Text> </AlertDialog.Text> <AlertDialog.ConfirmButton> <TextButton onClick={() => setVisible(false)}> <Text>OK</Text> </TextButton> </AlertDialog.ConfirmButton> <AlertDialog.DismissButton> <TextButton onClick={() => setVisible(false)}> <Text>Cancel</Text> </TextButton> </AlertDialog.DismissButton> </AlertDialog> )} </Host> ); }

With icon

IconDialogExample.tsx
import { useState } from 'react'; import { Host, AlertDialog, Button, TextButton, Text, Icon } from '@expo/ui/jetpack-compose'; export default function IconDialogExample() { const [visible, setVisible] = useState(false); return ( <Host matchContents> <Button onClick={() => setVisible(true)}> <Text>Show Alert</Text> </Button> {visible && ( <AlertDialog onDismissRequest={() => setVisible(false)}> <AlertDialog.Icon> {/* Replace with your own icon asset */} <Icon source={require('./info-icon.xml')} /> </AlertDialog.Icon> <AlertDialog.Title> <Text>Dialog with Icon</Text> </AlertDialog.Title> <AlertDialog.Text> <Text>This dialog has an icon above the title.</Text> </AlertDialog.Text> <AlertDialog.ConfirmButton> <TextButton onClick={() => setVisible(false)}> <Text>OK</Text> </TextButton> </AlertDialog.ConfirmButton> </AlertDialog> )} </Host> ); }

API

import { AlertDialog } from '@expo/ui/jetpack-compose';

No API data file found, sorry!