Reference version

AlertDialog

A Jetpack Compose AlertDialog component for displaying native alert dialogs.

Android
Bundled version:
~55.0.9

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.

Installation

Terminal
npx 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';

Component

AlertDialog

Android

Type: React.Element<AlertDialogProps>

Renders an AlertDialog component with slot-based content matching the Compose API. Content is provided via slot sub-components: AlertDialog.Title, AlertDialog.Text, AlertDialog.ConfirmButton, AlertDialog.DismissButton, and AlertDialog.Icon.

AlertDialogProps

children

Android
Optional • Type: React.ReactNode

Children containing slot sub-components (AlertDialog.Title, AlertDialog.Text, AlertDialog.ConfirmButton, AlertDialog.DismissButton, AlertDialog.Icon).

colors

Android
Optional • Type: AlertDialogColors

Colors for the alert dialog.

modifiers

Android
Optional • Type: ModifierConfig[]

Modifiers for the component.

onDismissRequest

Android
Optional • Type: () => void

Callback that is called when the user tries to dismiss the dialog (for example, by tapping outside of it or pressing the back button).

properties

Android
Optional • Type: DialogProperties

Properties for the dialog window.

tonalElevation

Android
Optional • Type: number

The tonal elevation of the dialog in dp, which affects its background color based on the color scheme.

Types

AlertDialogColors

Android

Colors for the alert dialog, matching AlertDialogDefaults in Compose.

PropertyTypeDescription
containerColor(optional)ColorValue

The background color of the dialog.

iconContentColor(optional)ColorValue

The color of the icon.

textContentColor(optional)ColorValue

The color of the body text.

titleContentColor(optional)ColorValue

The color of the title text.

DialogProperties

Android

Properties for the dialog window, matching DialogProperties in Compose.

PropertyTypeDescription
decorFitsSystemWindows(optional)boolean

Whether the dialog's decor fits system windows (status bar, navigation bar, and more). When true, the dialog's content will be inset to avoid overlapping with system UI.

Default:true
dismissOnBackPress(optional)boolean

Whether the dialog can be dismissed by pressing the back button.

Default:true
dismissOnClickOutside(optional)boolean

Whether the dialog can be dismissed by clicking outside of it.

Default:true
usePlatformDefaultWidth(optional)boolean

Whether the dialog should use the platform default width.

Default:true