instea/react-native-popup-menu

Popup menu component for React Native

JavaScript

1,557

401 commits

updated Jul 23, 2026

See the code

README

react-native-popup-menu

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

Features:

  • 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, react-native-web and react-native-desktop
  • Typescript definitions

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

Context Menu, Slide-in MenuPopover
Popup menu demoPopup menu demo

Installation

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

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

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 = () => (
  <MenuProvider>
    <YourApp />
  </MenuProvider>
);

// somewhere in your app
import {
  Menu,
  MenuOptions,
  MenuOption,
  MenuTrigger,
} from 'react-native-popup-menu';

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

Documentation

Contributing

Contributions are welcome! Just open an issues with any idea or pull-request if it is no-brainer. Make sure all tests and linting rules pass.

React Native Compatibility

We keep compatibility on best effort basis.

First table describes what minimal version of RN (or React) is needed to use version of popup menu.

popup-menu versionmin RN (React) version
0.130.55 (16.3.1)
0.90.40
0.80.38
0.70.18

Second is other way round - which minimal version of popup-menu is required to work well with RN (or React version)

RN (React) versionpopup-menu version
0.81+ (SafeAreaView depecation, see #301)0.19
0.78 (19.0)0.18
android
animation
ios
popup-menu
react-native

instea/react-native-popup-menu

Popup menu component for React Native

JavaScript

1,557

401 commits

updated Jul 23, 2026

See the code

README

react-native-popup-menu

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

Features:

  • 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, react-native-web and react-native-desktop
  • Typescript definitions

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

Context Menu, Slide-in MenuPopover
Popup menu demoPopup menu demo

Installation

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

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

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 = () => (
  <MenuProvider>
    <YourApp />
  </MenuProvider>
);

// somewhere in your app
import {
  Menu,
  MenuOptions,
  MenuOption,
  MenuTrigger,
} from 'react-native-popup-menu';

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

Documentation

Contributing

Contributions are welcome! Just open an issues with any idea or pull-request if it is no-brainer. Make sure all tests and linting rules pass.

React Native Compatibility

We keep compatibility on best effort basis.

First table describes what minimal version of RN (or React) is needed to use version of popup menu.

popup-menu versionmin RN (React) version
0.130.55 (16.3.1)
0.90.40
0.80.38
0.70.18

Second is other way round - which minimal version of popup-menu is required to work well with RN (or React version)

RN (React) versionpopup-menu version
0.81+ (SafeAreaView depecation, see #301)0.19
0.78 (19.0)0.18
android
animation
ios
popup-menu
react-native

Project health

Overall

3.0/10

Maintained

0/10

Code review

2/10
OpenSSF Scorecard

Latest release

0.19.0 · Dec 23, 2025

Releases this year

1

Significant stargazers

Farnabaz

367 followers · starred Apr 2018

Cheese

7 followers · starred May 2021

Sivin Varghese

102 followers · starred Mar 2023

Danilo Lemes

51 followers · starred Sep 2018