--- 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)