Menu
Use a menu to display a list of actions in a popover. Actions can open a modal, trigger an event, or link to an external page.
Supported targets
- customer-account.
footer. render-after - customer-account.
order-index. announcement. render - customer-account.
order-index. block. render - customer-account.
order-status. announcement. render - customer-account.
order-status. block. render - customer-account.
order-status. cart-line-item. render-after - customer-account.
order-status. cart-line-list. render-after - customer-account.
order-status. customer-information. render-after - customer-account.
order-status. fulfillment-details. render-after - customer-account.
order-status. payment-details. render-after - customer-account.
order-status. return-details. render-after - customer-account.
order-status. unfulfilled-items. render-after - customer-account.
order. action. menu-item. render - customer-account.
order. action. render - customer-account.
order. page. render - customer-account.
page. render - customer-account.
profile. addresses. render-after - customer-account.
profile. announcement. render - customer-account.
profile. block. render - customer-account.
profile. company-details. render-after - customer-account.
profile. company-location-addresses. render-after - customer-account.
profile. company-location-payment. render-after - customer-account.
profile. company-location-staff. render-after - customer-account.
profile. payment. render-after
Supported targets
- customer-account.
footer. render-after - customer-account.
order-index. announcement. render - customer-account.
order-index. block. render - customer-account.
order-status. announcement. render - customer-account.
order-status. block. render - customer-account.
order-status. cart-line-item. render-after - customer-account.
order-status. cart-line-list. render-after - customer-account.
order-status. customer-information. render-after - customer-account.
order-status. fulfillment-details. render-after - customer-account.
order-status. payment-details. render-after - customer-account.
order-status. return-details. render-after - customer-account.
order-status. unfulfilled-items. render-after - customer-account.
order. action. menu-item. render - customer-account.
order. action. render - customer-account.
order. page. render - customer-account.
page. render - customer-account.
profile. addresses. render-after - customer-account.
profile. announcement. render - customer-account.
profile. block. render - customer-account.
profile. company-details. render-after - customer-account.
profile. company-location-addresses. render-after - customer-account.
profile. company-location-payment. render-after - customer-account.
profile. company-location-staff. render-after - customer-account.
profile. payment. render-after
Anchor to propertiesProperties
- Anchor to accessibilityLabelaccessibilityLabelaccessibilityLabelstringstring
A label to describe the purpose of the menu that is announced by screen readers.
- Anchor to idididstringstring
A unique identifier for the element.
The Menu component exclusively accepts Button elements with restricted props as its children. The tone prop will always be set to monochrome by default.
- stringstring
A label that describes the purpose or contents of the Button. It will be read to users using assistive technologies such as screen readers.
Use this when using only an icon or the button text is not enough context for users using assistive technologies.
- ((event: CallbackEventListener<typeof buttonTagName>) => void) | null((event: CallbackEventListener<typeof buttonTagName>) => void) | null
Callback when the button is activated. This will be called before the action indicated by
type.- '--auto' | '--show' | '--hide' | '--toggle' | '--copy''--auto' | '--show' | '--hide' | '--toggle' | '--copy'Default: '--auto'Default: '--auto'
Sets the action the
should take when this clickable is activated.See the documentation of particular components for the actions they support.
--auto: a default action for the target component.--show: shows the target component.--hide: hides the target component.--toggle: toggles the target component.--copy: copies the target ClipboardItem.
- stringstring
ID of a component that should respond to activations (e.g. clicks) on this component.
See
commandfor how to control the behavior of the target.- booleanbooleanDefault: falseDefault: false
Disables the button, disallowing any interaction.
- stringstring
The URL to link to.
- If set, it will navigate to the location specified by
hrefafter executing thecallback. - If a
is set, thecommandwill be executed instead of the navigation.
- If set, it will navigate to the location specified by
- stringstring
A unique identifier for the element.
- booleanbooleanDefault: falseDefault: false
Replaces content with a loading indicator.
- 'auto' | '_self' | '_blank''auto' | '_self' | '_blank'Default: 'auto'Default: 'auto'
Specifies where to display the linked URL
- 'auto' | 'neutral' | 'critical''auto' | 'neutral' | 'critical'Default: 'auto'Default: 'auto'
Sets the tone of the Button, based on the intention of the information being conveyed.
- 'button' | 'submit''button' | 'submit'Default: 'button'Default: 'button'
The behavior of the button.
'submit'- Used to indicate the component acts as a submit button, meaning it submits the closest form.'button'- Used to indicate the component acts as a button, meaning it has no default action.'reset'- Used to indicate the component acts as a reset button, meaning it resets the closest form (returning fields to their default values).
This property is ignored if the component supports
hrefor/commandand one of them is set.
CallbackEventListener
(EventListener & {
(event: CallbackEvent<TTagName, TEvent>): void;
}) | nullCallbackEvent
TEvent & {
currentTarget: HTMLElementTagNameMap[TTagName];
}Preview

Examples
Code
Default
<> <s-button commandFor="order-actions-menu"> Manage </s-button> <s-menu id="order-actions-menu" accessibilityLabel="List of order actions" > <s-button>Submit problem</s-button> <s-button>Request return</s-button> <s-button tone="critical">Cancel order</s-button> </s-menu> </>
Anchor to best-practicesBest practices
Use these best practices to deliver a clear and accessible experience in your extensions.
Place menus consistently
Position menus in the upper‑right of full‑page extensions to match account pages like order status.
Group page‑level actions
Keep related actions in a single menu rather than scattering buttons across the page.
Limit items to what’s relevant
Include only actions that matter for the current page to reduce decision fatigue.
Order by frequency and risk
List the most common or least risky actions at the top so they’re easy to reach.
Write concise, action‑first labels
Use short labels (ideally two words) that start with a verb, use sentence case, avoid filler articles, and clearly state the outcome.