Skip to content




Use Dialog2 instead.


<Dialog isOpen={open} onDismiss={() => setOpen(false)} aria-labelledby="header-id">
<Dialog.Header id="header-id">Title</Dialog.Header>
<Box p={3}>
<Text fontFamily="sans-serif">Some content</Text>


open && (
title="Dialog example"
This is a <b>description</b> of the dialog.
footerButtons={[{content: 'Ok', onClick: () => setOpen(false)}]}
onClose={() => setOpen(false)}
<Text fontFamily="sans-serif">Some content</Text>

The dialog component is used for all modals. It renders on top of the rest of the app with an overlay.

You'll need to manage the isOpen state in a wrapper component of your own and pass in a function to be used to close the Dialog. For documentation purposes only we've created a mock State to handle this, but you should handle the state in the component you consume Dialog in or in a wrapper component.


A few considerations must be made to ensure your use of the Dialog component is accessible:

  • Always be sure to provide either aria-labelledby or aria-label to your Dialog component. In most cases you should use aria-labelledby and pass it the id of your Dialog.Header. If there is no text in your header, or you chose not to use a header, you can use aria-label to describe the purpose of the Dialog.

  • Be sure to pass a ref to return the focus back to once the Dialog closes via the returnFocusRef prop. In most cases this should be the element that opened the Dialog. If you decide to manage focus within your application and want to bypass Primer React Components from doing so when the Dialog closes, you can omit the returnFocusProp.


If you're running into z-index issues or are rendering the component inside of an absolutely positioned element, you can wrap your Dialog in a React Portal.


You can also pass any non-text content into the header:

Component props


Prop nameTypeDefaultDescription
isOpenBooleanSet whether or not the dialog is shown
onDismissFunctionA user-provided function that should close the dialog
returnFocusRefReact refThe element to restore focus back to after the Dialog is closed
initialFocusRefReact refElement inside of the Dialog you'd like to be focused when the Dialog is opened. If nothing is passed to initialFocusRef the close button is focused.
aria-labelledbystringPass an id to use for the aria-label. Use either a aria-label or an aria-labelledby but not both.
aria-labelstringPass a label to be used to describe the Dialog. Use either a aria-label or an aria-labelledby but not both.
sxSystemStyleObject{}Style to be applied to the component


Prop nameTypeDefaultDescription
sxSystemStyleObject{}Style to be applied to the component