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