Skip to main content
react-md - Expansion Panel - Installation


Expansion panels are used to create disclosure widgets that show additional information once the component has been toggled to an "open" state. In other words, expansion panels are a styled version of a details element.

An expansion panel can be rendered standalone or within a group with the ExpansionList component and usePanels hook.


npm install --save @react-md/expansion-panel

This package is not super helpful on its own, so it is recommended to also install the following packages:

npm install --save @react-md/theme \
  @react-md/typography \
  @react-md/list \


Expansion panels are normally rendered within a list of two or more panels. To create such a list, you'll want to use the ExpansionList and ExpansionPanel components and usePanels hook:

import { render } from "react-dom";
import {
} from "@react-md/expansion-panel";

const App = () => {
  const [panels, onKeyDown] = usePanels({
    count: 3,
    idPrefix: "my-panel-group",

  const [panel1Props, panel2Props, panel3Props] = panels;

  return (
      <ExpansionList onKeyDown={onKeyDown}>
        <ExpansionPanel {...panel1Props} headerChildren="Panel 1">
          Panel 1 contents...
        <ExpansionPanel {...panel2Props} headerChildren={<span>Panel 2</span>}>
          Panel 2 contents...
        <ExpansionPanel {...panel3Props} headerChildren="Panel 1">
          Panel 3 contents...

render(<App />, document.getElementById("root"));