Skip to main content

Common Examples

To use the BottomSheet, pass the required title and content. Open it with an Anvil2 RN Button through trigger, or control it with isOpen and onOpenChange.

Body content

Unlike Dialog, the sheet’s content is a general body region for forms, lists, and composed layouts. A plain string still renders in the sheet’s body typography. The header stays pinned while the body scrolls.

Subheader

Pass a short subheader for context beneath the title.

Open state

Omit isOpen for an uncontrolled sheet. Seed it with defaultOpen. When you pass isOpen, onOpenChange is required so the header close, scrim, Android back, and drag-to-dismiss can request a close.
Set isDismissable={false} to keep the scrim and Android back from closing the sheet. The header close still dismisses when showCloseButton is true.

Accessibility

  • The required title is a heading that names the modal. The sheet sets accessibilityViewIsModal.
  • The header close control is a button named "Close" (English until the kit gains i18n).
  • Drag down on the handle, tap the scrim, or use Android back to dismiss when isDismissable is true.
  • Reduce motion skips the slide animation.
Last modified on September 1, 2026