Extensible popup menu component for React Native for Android, iOS and (unofficially) UWP and react-native-web.


  • Simple to use popup/context menu
  • Multiple modes: animated, not animated, slide in from bottom or popover
  • By default opening and closing animations
  • Optional back button handling
  • Easy styling
  • Customizable on various levels - menu options, positioning, animations
  • Can work as controlled as well as uncontrolled component
  • Different lifecycle hooks
  • RTL layout support

Community driven features:

  • Support for UWP and react-native-web
  • Typescript definitions

We thank our community for maintaining features that goes over our scope.

Context Menu, Slide-in Menu Popover
android.demo android.demo-popover


npm install react-native-popup-menu --save

If you are using older RN versions check our compatibility table.

If you are using RN 0.55+, you might want to check our beta version (see #90 for details and please leave us the feedback)

Basic Usage

Wrap your application inside MenuProvider and then simply use Menu component where you need it. Below you can find a simple example.

For more detailed documentation check API.

// your entry point
import { MenuProvider } from 'react-native-popup-menu';

export const App = () => (
    <YourApp />

// somewhere in your app
import {
} from 'react-native-popup-menu';

export const YourComponent = () => (
    <Text>Hello world!</Text>
      <MenuTrigger text='Select action' />
        <MenuOption onSelect={() => alert(`Save`)} text='Save' />
        <MenuOption onSelect={() => alert(`Delete`)} >
          <Text style={{color: 'red'}}>Delete</Text>
        <MenuOption onSelect={() => alert(`Not called`)} disabled={true} text='Disabled' />

React Native Compatibility

We keep compatibility on best effort basis.

popup-menu version min RN version
0.9 0.40
0.8 0.38
0.7 0.18