--- title: Use Native Menus for Dropdowns and Context Menus impact: HIGH impactDescription: native accessibility, platform-consistent UX tags: user-interface, menus, context-menus, zeego, accessibility --- ## Use Native Menus for Dropdowns and Context Menus Use native platform menus instead of custom JS implementations. Native menus provide built-in accessibility, consistent platform UX, and better performance. Use [zeego](https://zeego.dev) for cross-platform native menus. **Incorrect (custom JS menu):** ```tsx import { useState } from 'react' import { View, Pressable, Text } from 'react-native' function MyMenu() { const [open, setOpen] = useState(false) return ( setOpen(!open)}> Open Menu {open && ( console.log('edit')}> Edit console.log('delete')}> Delete )} ) } ``` **Correct (native menu with zeego):** ```tsx import * as DropdownMenu from 'zeego/dropdown-menu' function MyMenu() { return ( Open Menu console.log('edit')}> Edit console.log('delete')} > Delete ) } ``` **Context menu (long-press):** ```tsx import * as ContextMenu from 'zeego/context-menu' function MyContextMenu() { return ( Long press me console.log('copy')}> Copy console.log('paste')}> Paste ) } ``` **Checkbox items:** ```tsx import * as DropdownMenu from 'zeego/dropdown-menu' function SettingsMenu() { const [notifications, setNotifications] = useState(true) return ( Settings setNotifications((prev) => !prev)} > Notifications ) } ``` **Submenus:** ```tsx import * as DropdownMenu from 'zeego/dropdown-menu' function MenuWithSubmenu() { return ( Options console.log('home')}> Home More Options Settings Help ) } ``` Reference: [Zeego Documentation](https://zeego.dev/components/dropdown-menu)