# react-native-popup-menu

> extensible popup/context menu for react native

Latest version **0.19.0** (published 2025-12-23) · ISC license · 0 weekly downloads

## Install

```sh
npm install react-native-popup-menu
pnpm add react-native-popup-menu
yarn add react-native-popup-menu
bun add react-native-popup-menu
```

## Health

**Score 60/100 (C)** — status: stable.

Positive: has types; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.19.0 |
| Published | 2025-12-23 |
| First published | 2016-05-18 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 441.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1557 |
| Author | instea.co |
| Maintainers | instea-admin, sodik82, madox2 |

## Links

- npm: https://www.npmjs.com/package/react-native-popup-menu
- Repository: https://github.com/instea/react-native-popup-menu
- Issues: https://github.com/instea/react-native-popup-menu/issues
- npm.io page: https://npm.io/package/react-native-popup-menu

## Recent versions

- 0.19.0 (latest) — 2025-12-23
- 0.19.0-beta.0 (beta) — 2025-12-15
- 0.18.0 — 2025-06-07
- 0.18.0-beta.1 — 2025-06-07
- 0.18.0-beta.0 — 2025-06-07
- 0.17.0 — 2025-03-17
- 0.16.1 — 2022-09-06
- 0.16.0 — 2022-08-29
- 0.15.13 — 2022-08-11
- 0.15.12 — 2021-11-23
- 0.15.11 — 2021-06-11
- 0.15.10 — 2020-12-11
- 0.15.9 — 2020-07-04
- 0.15.8 — 2020-06-22
- 0.15.7 — 2020-02-08
- … 54 more at https://npm.io/package/react-native-popup-menu/versions

## README

# react-native-popup-menu
[![](https://img.shields.io/npm/dm/react-native-popup-menu.svg?style=flat-square)](https://www.npmjs.com/package/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 Menu | Popover |
|---|---|
|![Popup menu demo](./android.demo.gif)|![Popup menu demo](./android.demo-popover.gif)|

## 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](./doc/api.md).

```js
// 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

- [Examples](doc/examples.md)
- [API](doc/api.md)
- [Extension points](doc/extensions.md)

## 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 version | min RN (React) version |
| ------------------ | -------------- |
| 0.13               | 0.55 (16.3.1)  |
| 0.9                | 0.40           |
| 0.8                | 0.38           |
| 0.7                | 0.18           |

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

| RN (React) version | popup-menu version |
| ------------------ | -------------- |
| 0.81+ (SafeAreaView depecation, see [#301](https://github.com/instea/react-native-popup-menu/issues/301)) | 0.19   |
| 0.78 (19.0)        | 0.18           |

---
_Source: https://npm.io/package/react-native-popup-menu · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
