szhsin/react-menu

React component for building accessible menu, dropdown, submenu, context menu, and more

JavaScript

1,220

1,220 commits

updated Oct 16, 2026

See the code

README

React-Menu

An accessible, keyboard-friendly React menu library

Live examples and docs

NPM NPM bundlephobia Snyk Vulnerability Badge

Features

  • Lightweight, unstyled React menu components
  • Unlimited submenu nesting
  • Supports dropdown, hover, and context menus
  • Radio and checkbox menu items
  • Flexible positioning options
  • Full keyboard interaction support
  • Compatible with React 18+ concurrent rendering
  • Supports server-side rendering
  • Implements WAI-ARIA menu pattern

Install

with npm

npm install @szhsin/react-menu

or with Yarn

yarn add @szhsin/react-menu

Usage

import { Menu, MenuItem, MenuButton, SubMenu } from '@szhsin/react-menu';

export default function App() {
  return (
    <Menu menuButton={<MenuButton>Open menu</MenuButton>}>
      <MenuItem>New File</MenuItem>
      <MenuItem>Save</MenuItem>
      <SubMenu label="Edit">
        <MenuItem>Cut</MenuItem>
        <MenuItem>Copy</MenuItem>
        <MenuItem>Paste</MenuItem>
      </SubMenu>
      <MenuItem>Print...</MenuItem>
    </Menu>
  );
}

Edit on CodeSandbox

Visit more examples and docs

FAQs

Still on an old version? Please checkout our migration guides.

License

MIT Licensed.

accessibility
checkbox
contextmenu
dropdown
menu
menubutton
radio-buttons
react
sub-menu
submenu
tooltip
wai-aria

szhsin/react-menu

React component for building accessible menu, dropdown, submenu, context menu, and more

JavaScript

1,220

1,220 commits

updated Oct 16, 2026

See the code

README

React-Menu

An accessible, keyboard-friendly React menu library

Live examples and docs

NPM NPM bundlephobia Snyk Vulnerability Badge

Features

  • Lightweight, unstyled React menu components
  • Unlimited submenu nesting
  • Supports dropdown, hover, and context menus
  • Radio and checkbox menu items
  • Flexible positioning options
  • Full keyboard interaction support
  • Compatible with React 18+ concurrent rendering
  • Supports server-side rendering
  • Implements WAI-ARIA menu pattern

Install

with npm

npm install @szhsin/react-menu

or with Yarn

yarn add @szhsin/react-menu

Usage

import { Menu, MenuItem, MenuButton, SubMenu } from '@szhsin/react-menu';

export default function App() {
  return (
    <Menu menuButton={<MenuButton>Open menu</MenuButton>}>
      <MenuItem>New File</MenuItem>
      <MenuItem>Save</MenuItem>
      <SubMenu label="Edit">
        <MenuItem>Cut</MenuItem>
        <MenuItem>Copy</MenuItem>
        <MenuItem>Paste</MenuItem>
      </SubMenu>
      <MenuItem>Print...</MenuItem>
    </Menu>
  );
}

Edit on CodeSandbox

Visit more examples and docs

FAQs

Still on an old version? Please checkout our migration guides.

License

MIT Licensed.

accessibility
checkbox
contextmenu
dropdown
menu
menubutton
radio-buttons
react
sub-menu
submenu
tooltip
wai-aria

Project health

Overall

3.8/10

Maintained

6/10

Code review

1/10
OpenSSF Scorecard

Latest release

4.5.2 · Jun 6, 2026

Releases this year

2

Significant stargazers

Dale Seo

588 followers · starred Aug 2021

Olivier Tassinari

3,347 followers · starred Aug 2024

Misha Moroshko

433 followers · starred Oct 2020

Jeff Wen

171 followers · starred Apr 2025