Expo UI Menu matches the official SwiftUI Menu API and supports styling via the buttonStyle modifier. Menu opens on a single tap. For long-press interactions, use ContextMenu instead.
To create a menu with the iOS Liquid Glass appearance, use buttonStyle('glass') or buttonStyle('glassProminent') on the Menu component.
Important: Do not apply the glassEffect() modifier to the Menu's label view to achieve a glass look. This causes a visual artifact where a rectangular halo briefly appears behind the trigger when the menu is dismissed. Always use buttonStyle instead, which correctly integrates with the Menu's dismiss animation.
Use a ControlGroup inside a menu to render a horizontal row of icon buttons, similar to the quick actions row in Apple Music or Safari menus.
MenuWithControlGroupExample.tsx
import{Host,Menu,ControlGroup,Button,Section,Divider}from'@expo/ui/swift-ui';exportdefaultfunctionMenuWithControlGroupExample(){return(<HostmatchContents><Menulabel="Song Options"systemImage="ellipsis.circle"><ControlGroup><ButtonsystemImage="plus"label="Add"onPress={()=>console.log('Add')}/><ButtonsystemImage="star"label="Favorite"onPress={()=>console.log('Favorite')}/><ButtonsystemImage="square.and.arrow.up"label="Share"onPress={()=>console.log('Share')}/></ControlGroup><Section><ButtonsystemImage="text.badge.plus"label="Add to a Playlist"onPress={()=>console.log('Add to Playlist')}/><ButtonsystemImage="antenna.radiowaves.left.and.right"label="Create Station"onPress={()=>console.log('Create Station')}/></Section><Divider/><ButtonsystemImage="hand.thumbsdown"label="Suggest Less"onPress={()=>console.log('Suggest Less')}/></Menu></Host>);}
Icon only menu button
Use the labelStyle('iconOnly') modifier to display only the icon without the label text. The label prop should still be provided for accessibility purposes.
A callback that is invoked when the user taps the menu label.
When provided, a single tap triggers this action, while a long-press shows the menu.
When not provided, a single tap shows the menu.
systemImage
iOS
tvOS
Optional • Type: string
An SF Symbol name to display alongside the label.
Only used when label is a string.