Skip to content

IconButton API

API reference docs for the React IconButton component. Learn about the props, CSS, and other APIs of this exported module.

Demos

Import

import IconButton from '@mui/material/IconButton';
// or
import { IconButton } from '@mui/material';

Learn about the difference by reading this guide on minimizing bundle size.



Refer to the Icons section of the documentation regarding the available icon options.

Props

Props of the ButtonBase component are also available.

NameTypeDefaultDescription
childrennode-

The icon to display.

classesobject-

Override or extend the styles applied to the component.

See CSS classes API below for more details.

color'inherit'
| 'default'
| 'primary'
| 'secondary'
| 'error'
| 'info'
| 'success'
| 'warning'
| string
'default'

The color of the component. It supports both default and custom theme colors, which can be added as shown in the palette customization guide.

disabledboolfalse

If true, the component is disabled.

disableFocusRippleboolfalse

If true, the keyboard focus ripple is disabled.

disableRippleboolfalse

If true, the ripple effect is disabled.
⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure to highlight the element by applying separate styles with the .Mui-focusVisible class.

edge'end'
| 'start'
| false
false

If given, uses a negative margin to counteract the padding on one side (this is often helpful for aligning the left or right side of the icon with content above or below, without ruining the border size and shape).

loadingboolfalse

If true, the loading indicator is shown and the button becomes disabled.

loadingIndicatornode<CircularProgress color="inherit" size={16} />

Element placed before the children if the button is in loading state. The node should contain an element with role="progressbar" with an accessible name. By default we render a CircularProgress that is labelled by the button itself.

size'small'
| 'medium'
| 'large'
| string
'medium'

The size of the component. small is equivalent to the dense button styling.

sxArray<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.

The ref is forwarded to the root element.

Inheritance

While not explicitly documented above, the props of the ButtonBase component are also available in IconButton. You can take advantage of this to target nested components.

Theme default props

You can use MuiIconButton to change the default props of this component with the theme.

CSS classes

These class names are useful for styling with CSS. They are applied to the component's slots when specific states are triggered.

Class nameRule nameDescription
.Mui-disabledState class applied to the root element if disabled={true}.
.MuiIconButton-colorErrorcolorErrorStyles applied to the root element if color="error".
.MuiIconButton-colorInfocolorInfoStyles applied to the root element if color="info".
.MuiIconButton-colorInheritcolorInheritStyles applied to the root element if color="inherit".
.MuiIconButton-colorPrimarycolorPrimaryStyles applied to the root element if color="primary".
.MuiIconButton-colorSecondarycolorSecondaryStyles applied to the root element if color="secondary".
.MuiIconButton-colorSuccesscolorSuccessStyles applied to the root element if color="success".
.MuiIconButton-colorWarningcolorWarningStyles applied to the root element if color="warning".
.MuiIconButton-edgeEndedgeEndStyles applied to the root element if edge="end".
.MuiIconButton-edgeStartedgeStartStyles applied to the root element if edge="start".
.MuiIconButton-loadingloadingStyles applied to the root element if loading={true}.
.MuiIconButton-loadingIndicatorloadingIndicatorStyles applied to the loadingIndicator element.
.MuiIconButton-rootrootStyles applied to the root element.
.MuiIconButton-sizeLargesizeLargeStyles applied to the root element if size="large".
.MuiIconButton-sizeMediumsizeMediumStyles applied to the root element if size="medium".
.MuiIconButton-sizeSmallsizeSmallStyles applied to the root element if size="small".

You can override the style of the component using one of these customization options:

Source code

If you did not find the information in this page, consider having a look at the implementation of the component for more detail.