Modal API
API reference docs for the React Modal component. Learn about the props, CSS, and other APIs of this exported module.
Demos
Import
import Modal from '@mui/material/Modal';
// or
import { Modal } from '@mui/material';Learn about the difference by reading this guide on minimizing bundle size.
Modal is a lower-level construct that is leveraged by the following components:
If you are creating a modal dialog, you probably want to use the Dialog component rather than directly using Modal.
This component shares many concepts with react-overlays.
Props of the native component are also available.
| Name | Type | Default | Description | 
|---|---|---|---|
| children* | element | - | A single child content element. | 
| open* | bool | - | If  | 
| BackdropComponent | elementType | styled(Backdrop, { name: 'MuiModal', slot: 'Backdrop', overridesResolver: (props, styles) => { return styles.backdrop; }, })({ zIndex: -1, }) | A backdrop component. This prop enables custom backdrop rendering. | 
| BackdropProps | object | - | Props applied to the  | 
| classes | object | - | Override or extend the styles applied to the component. See CSS classes API below for more details. | 
| closeAfterTransition | bool | false | When set to true the Modal waits until a nested Transition is completed before closing. | 
| component | elementType | - | The component used for the root node. Either a string to use a HTML element or a component. | 
| components | { Backdrop?: elementType, Root?: elementType } | {} | The components used for each slot inside. | 
| componentsProps | { backdrop?: func | object, root?: func | object } | {} | The extra props for the slot components. You can override the existing props or add new ones. | 
| container | HTML element | func | - | An HTML element or function that returns one. The  | 
| disableAutoFocus | bool | false | If  | 
| disableEnforceFocus | bool | false | If  | 
| disableEscapeKeyDown | bool | false | If  | 
| disablePortal | bool | false | The  | 
| disableRestoreFocus | bool | false | If  | 
| disableScrollLock | bool | false | Disable the scroll lock behavior. | 
| hideBackdrop | bool | false | If  | 
| keepMounted | bool | false | Always keep the children in the DOM. This prop can be useful in SEO situation or when you want to maximize the responsiveness of the Modal. | 
| onBackdropClick | func | - | Callback fired when the backdrop is clicked. | 
| onClose | func | - | Callback fired when the component requests to be closed. The  Signature: function(event: object, reason: string) => void
 | 
| onTransitionEnter | func | - | A function called when a transition enters. | 
| onTransitionExited | func | - | A function called when a transition has exited. | 
| slotProps | { backdrop?: func | object, root?: func | object } | {} | The props used for each slot inside the Modal. | 
| slots | { backdrop?: elementType, root?: elementType } | {} | The components used for each slot inside the Modal. Either a string to use a HTML element or a component. | 
| sx | Array<func | object | bool> | func | object | - | The system prop that allows defining system overrides as well as additional CSS styles. See the `sx` page for more details. | 
ref is forwarded to the root element.| Slot name | Class name | Default component | Description | 
|---|---|---|---|
| root | .MuiModal-root | 'div' | The component that renders the root. | 
| backdrop | .MuiModal-backdrop | The component that renders the backdrop. | 
These class names are useful for styling with CSS. They are applied to the component's slots when specific states are triggered.
| Class name | Rule name | Description | 
|---|
You can override the style of the component using one of these customization options:
- With a global class name.
- With a rule name as part of the component's styleOverridesproperty in a custom theme.