Skip to main content

Overflow menu

The overflow menu is the button in the top-right corner of a card. It gives customers the card's secondary actions: vote up (This is useful), vote down (This isn’t useful), snooze (Remind me) and Dismiss.

This page describes how the menu, and the snooze and feedback screens it opens, look and behave in each SDK and container type. To turn these actions on or off for a card, see Secondary card actions.

How the overflow menu opens when a customer taps or clicks the menu button (excluding the × used to dismiss). Behaviour and display are hard-coded and can’t be customised.

ContainerAndroid 26.2.0+iOS 26.2.0+Web 26.2.0+
Multi-card verticalOpens a dropdown from the menu button¹Triggers a bottom sheetOpens a dropdown from the menu button²
Multi-card horizontalTriggers a bottom sheetTriggers a bottom sheetOpens a dropdown from the menu button²
Single cardTriggers a bottom sheetTriggers a bottom sheetOpens a dropdown from the menu button²
ModalTriggers a bottom sheetTriggers a bottom sheetOpens a dropdown from the menu button²
Launcher (web only)N/AN/AOpens a dropdown from the menu button, inside the launcher panel²

¹ Opens above the button if there’s no room below.

² Web 26.2.0 always opens below, with an internal scroll if there isn’t enough space to display the entire menu. From 26.3.0, it opens above if there’s enough space.

The open overflow menu on Android as a dropdown and as a bottom sheet, on iOS as a bottom sheet, and on Web as a dropdown
Menu display – Android, iOS and Web

From left to right:

  1. Android – dropdown, in the vertical container only.
  2. Android – bottom sheet, in every other container: horizontal, single card and modal.
  3. iOS – bottom sheet, in all containers.
  4. Web – dropdown, in all containers.

Styling, position and shape of the menu button, the menu and its content. See Containers for more on customising the content.

Menu buttons: a kebab on Android and Web, a meatball on iOS, and a cross on all platforms when Dismiss is the only action
Menu icon – Android and Web use a kebab (three vertical dots) and iOS uses a meatball (three horizontal dots), following each platform’s convention. When ‘Dismiss’ is the only action enabled, every platform shows an × that dismisses the card.
SettingAndroid 26.2.0+iOS 26.2.0+Web 26.2.0+
Menu button iconFixed kebab menu – three vertical dots (follows native Android convention)Fixed meatball menu – three horizontal dots (follows native iOS convention)Same as Android
Menu button colourThemeable icon and background colour (includes default and active states)Same as AndroidThemeable icon and background colour (includes default, hover and active states, plus keyboard focus border)
Menu button size & shapeFixed: 30dp circleFixed: 30pt circleFixed: 30px circle
Menu button positionThemeable menu button paddingSame as Android²Same as Android
Menu backgroundThemeable menu background colourSame as AndroidSame as Android
Menu item text & iconsThemeable text colour, typography and icon colour, for default and active states, plus an active row background. Icons are hard-coded and can’t be removed or swapped out.Same as AndroidThemeable text colour, typography and icon colour, for default, hover and active states, plus hover/active row background. Icons are hard-coded and can’t be removed or swapped out.
Menu item spacingFixedSame as AndroidSame as Android
DividerThemeable divider colour. Shows between the vote items and Remind me/Dismiss.Same as AndroidSame as Android
Menu dropdown corner radiusThemeable border radiusN/ASame as Android
Menu dropdown widthFixed – set by the SDKN/AFixed – set by the SDK¹
Menu dropdown shadowFixed (follows native Android convention)N/AFixed
Bottom sheet top cornersFixedThemeable border radius, applied to the top cornersN/A
Bottom sheet drag handle & cancel rowNone. Menu can be closed by tapping the mask or swiping the sheet down.None. Menu can be closed by tapping the mask.N/A
Menu mask (scrim) behind open menuNo mask on vertical container. All other containers have a fixed scrim colour.Themeable colour and opacityNo mask behind the dropdown

¹ Web 26.2.0 has a fixed width of 300px. From 26.3.0, it’s 75% of the card width, with a minimum of 240px and a maximum of 420px.

² iOS – the position also depends on whether the card’s first element fills the whole row: an inline image does, a text block doesn’t.

Snooze screen​

Behaviour and display of the snooze screen when a customer selects Remind me from the overflow menu. Placement and layout are hard-coded and can’t be customised. The screen’s header, inputs and buttons follow the subview theme.

ContainerAndroid 26.2.0+iOS 26.2.0+³Web 26.2.0+
Multi-card verticalOpens full screenOpens full screenOpens full screen – filling the container¹
Multi-card horizontalOpens full screenOpens full screenOpens a modal over the page²
Single cardOpens full screenOpens full screenOpens a modal over the page²
ModalOpens full screenOpens full screenCard-width panel, centred over the mask
Launcher (web only)N/AN/AFills the launcher panel

¹ Web – if the container is set to autosize, the screen sizes to the natural height of its contents.

² Web 26.2.0 opens the screen in an iframe, which sits in the normal page flow after the container and can be positioned with CSS. 26.3.0 opens a modal, centred and up to 480px wide by default. Its placement, size, corner rounding and shadow can be changed with style overrides.

³ iOS – how the screen opens depends on how the app hosts the container. If the container is inside the app’s NavigationStack, the screen slides in from the right and the app’s tab bar stays visible. Otherwise it opens full screen from the bottom. Apps can force full screen for the vertical container with navigationMode: .forceModal. Horizontal and single card containers always open full screen. The modal container opens the screen inside its own full-screen window, so it always looks full screen.

Android snooze flow: Remind me selected in the menu, then the snooze screen with date and time pickers
Android ‘Snooze’ flow
iOS snooze flow: Remind me selected in the bottom sheet, then the snooze screen with date and time wheels
iOS ‘Snooze’ flow
Web snooze flow: Remind me selected in the dropdown, then the snooze screen with date and time fields
Web ‘Snooze’ flow (vertical container)
The snoozing state on Android, then the snooze toast on Android, iOS and Web
‘Snooze’ – interstitial state, then the toast in Android, iOS and Web

Feedback screen​

Behaviour and display of the vote up and vote down screens when a customer selects This is useful or This isn’t useful from the overflow menu. Placement and layout are hard-coded and can’t be customised. The screen’s header, inputs and buttons follow the subview theme.

ContainerAndroid 26.2.0+iOS 26.2.0+³Web 26.2.0+
Multi-card verticalOpens full screenOpens full screenOpens full screen – filling the container¹
Multi-card horizontalOpens full screenOpens full screenOpens a modal over the page²
Single cardOpens full screenOpens full screenOpens a modal over the page²
ModalOpens full screenOpens full screenCard-width panel, centred over the mask
Launcher (web only)N/AN/AFills the launcher panel

¹ Web – if the container is set to autosize, the screen sizes to the natural height of its contents.

² Web 26.2.0 opens the screen in an iframe, which sits in the normal page flow after the container and can be positioned with CSS. 26.3.0 opens a modal, centred and up to 480px wide by default. Its placement, size, corner rounding and shadow can be changed with style overrides.

³ iOS – how the screen opens depends on how the app hosts the container. If the container is inside the app’s NavigationStack, the screen slides in from the right and the app’s tab bar stays visible. Otherwise it opens full screen from the bottom. Apps can force full screen for the vertical container with navigationMode: .forceModal. Horizontal and single card containers always open full screen. The modal container opens the screen inside its own full-screen window, so it always looks full screen.

Android​

Android vote up flow with text feedback on
Android ‘Vote up’ flow – text feedback on
Android vote down flow choosing a built-in reason
Android ‘Vote down’ flow – built-in reason
Android vote down flow choosing Something else and entering text
Android ‘Vote down’ flow – something else

iOS​

iOS vote up flow with text feedback on
iOS ‘Vote up’ flow – text feedback on
iOS vote down flow choosing a built-in reason
iOS ‘Vote down’ flow – built-in reason
iOS vote down flow choosing Something else and entering text
iOS ‘Vote down’ flow – something else

Web​

Web vote up flow with text feedback on
Web ‘Vote up’ flow – text feedback on (vertical container)
Web vote down flow choosing a built-in reason
Web ‘Vote down’ flow – built-in reason (vertical container)
Web vote down flow choosing Something else and entering text
Web ‘Vote down’ flow – something else (vertical container)

Toast​

The feedback received toast on Android, iOS and Web
Feedback – the toast in Android, iOS and Web

Dismiss​

Dismissing a card doesn’t open a screen. The card leaves the stream and the Card dismissed toast shows.

The dismissing state on Android, then the card dismissed toast on Android, iOS and Web
‘Dismiss’ – interstitial state, then the toast in Android, iOS and Web

Containers​

General behaviour, display and customisation across containers, and where each can be configured.

BehaviourAndroid 26.2.0+iOS 26.2.0+Web 26.2.0+
Menu action availabilityEach action (including feedback) is enabled or disabled at the environment level, then enabled options are available per card template.Same as AndroidSame as Android
Menu labelsThe default menu item labels (This is useful, This isn’t useful, Remind me, Dismiss) can be changed in the SDK configuration.Same as Android⁴Same as Android
Menu item orderMenu item order, and the divider between voting and other actions, are hard-coded.Same as AndroidSame as Android
Dismiss-only stateWhen Dismiss is the only action enabled, the menu dots (kebab and meatball) become an × that dismisses the card.Same as AndroidSame as Android
No actions enabledWhen all four actions are turned off for a card, there’s no menu button.Same as AndroidSame as Android
Snooze picker & periodDisplays a date and time picker. Times are hard-coded to 15-minute increments. A preset period is only available on a Snooze button. Date and time formats depend on the platform³.Same as Android⁵Same as Android. Single card and horizontal containers show the title with an × on the right. Vertical, modal and launcher containers show a back arrow on the left. The button below the fields always reads Done.
Snooze repetitionCustomers can snooze a card more than once.Same as AndroidSame as Android
Vote up feedbackOnly opens a screen when feedback is enabled. Optional text, up to 280 characters.Same as AndroidSame as Android
Vote down feedbackAlways opens a screen, displaying It’s not relevant, I see this too often and Something else. Turning off text feedback hides the Something else option.Same as AndroidSame as Android
Feedback placeholder labelThe feedback placeholder label can be customised per card, in the Workbench card editor.Same as AndroidSame as Android
Feedback cancel & submit buttonDisplays an x on the left and a Submit button on the right of the header. Vote up always displays Submit. Vote down shows Submit once a reason is chosen. For Something else, the customer must also enter text.Displays a Cancel button on the left and a Submit button on the right of the header. Vote up always displays Submit. Vote down shows Submit once a reason is chosen. For Something else, the customer must also enter text.Single card and horizontal containers display an × on the right of the header and a Submit button below the options. Vertical, modal and launcher containers display a back arrow on the left of the header.
ToastFull-width bar at the bottom of the screen, in every container: Snoozed until 3:00 pm or Feedback received. The time is always lowercase – 3:00 pm – and another day adds the date³.Full-width bar at the bottom of the screen. The time follows the phone’s region – 3:00 pm (AU, UK) or 3:00 PM (NZ, US) – and another day adds the date³. Tapping the toast dismisses it⁶.Box with rounded corners at the bottom of the feed¹, with the same text. In single card and modal it sits at the bottom centre of the window². Clicking the toast dismisses it. The time is always shown as 3:00 PM.

¹ Other web containers can use custom toast placement instead. See custom toast message positioning.

² From Web 26.3.0, the toast’s position, width bounds and text alignment can be changed with style overrides.

³ Date and time formats depend on the platform. Android uses the phone’s region for the first day of the calendar week (Monday in New Zealand, Australia and the UK; Sunday in the US) and always writes times in lowercase (‘2:15 pm’). iOS uses a date wheel, so there’s no first day of the week, and uses the phone’s region for the time format (‘2:15 pm’ in Australia and the UK, ‘2:15 PM’ in the US and New Zealand). The iOS Date row uses the region’s long date format (‘29 October 2026’ in New Zealand, ‘October 29, 2026’ in the US). The wheel follows the phone’s 12 or 24-hour setting, but the Time row always shows 12-hour time, so with 24-hour time on, the two show different formats. Web always starts the calendar on Monday and writes times in capitals (‘2:15 PM’). The screens on this page show a New Zealand region.

⁴ iOS – the feedback screen title (Send feedback) can also be changed. The snooze screen title uses the Remind me label. The screen buttons (Cancel, Submit, Done) and the three vote down reasons are fixed.

⁵ iOS – the snooze screen header shows Cancel and Done (not Submit). Times after the card’s expiry can’t be picked, and the default time is the first 15-minute slot at least 5 minutes from now. The wheel panel that opens from the Date and Time rows doesn’t follow the subview theme – its Done button and background use fixed iOS system colours.

⁶ iOS – apps can change the toast text in the SDK configuration (toastCardSnoozeMessage, toastCardFeedbackMessage) or turn toasts off. A custom snooze message replaces the whole text, including the time. When the snooze is on another day, the day always comes before the month (‘30 Oct 2026, 3:00 pm’), even in the US.