Design

SaaS Dropdown & Select Menu UX: Real Screenshots & UX Patterns (2026)

Dropdowns and selects are the most-used and most-abused control in SaaS — the field that asks a person to pick one option, or a few, from a set. A good one reads instantly: you can tell it is a picker, opening it is effortless, the options are scannable and searchable when there are many, the current choice is obvious, and keyboard and screen-reader users can drive the whole thing without a mouse. Done badly it hides the chosen value, opens off the edge of the screen, forces endless scrolling through an unsearchable list, collapses the moment you try to multi-select, and strands anyone not using a pointer. This guide separates the three controls people conflate — a value-picking select, a filterable combobox, and an action menu — and walks the patterns that make each genuinely usable: native versus custom, search and grouping for long lists, single versus multi-select, placeholder and default behaviour, positioning and overflow, async loading and empty results, and the full keyboard/ARIA contract — each shown with real SaaS screenshots instead of mockups.

Rakesh Mondal

Rakesh Mondal

Ai Native SaaS UX UI Product Designer

·16 min read
Share

The dropdown is the control SaaS reaches for whenever a person has to choose. Set a status, pick an assignee, change a workspace, filter a table, select a plan, choose a timezone — behind almost every one of those is a field that stays quiet until you click it, then unfolds a list of options and folds back down around your choice. It is deceptively simple, which is exactly why it is so often wrong. The same visual — a box with a chevron — gets used for three genuinely different jobs, and treating them as one control is the root of most dropdown pain: a select that holds a value, a combobox that lets you type to filter a long list, and an action menu that is not a value at all but a set of things you can do. A dropdown works when it fits the job — you can tell at a glance what it does, opening it is effortless, the options are easy to scan and find, and your current choice is unmistakable once it closes.

Clay Navigation screen with real SaaS Artificial Intelligence UI patterns - SaaSUI design example
Clay logo
Clay
Artificial Intelligence·Navigation
View all

Clay — a real navigation screen from the SaaSUI library.

The failure modes are ordinary and everywhere. A select whose closed state does not show the chosen value, so you have to open it again just to check what you picked. A list of two hundred countries or timezones with no search box, forcing a scroll-and-hunt through options that should have been type-to-filter. A menu that opens downward into the bottom edge of the viewport and clips half its options. A multi-select that hides your selections behind a count or throws them away when you pick the second one. And the quiet accessibility cliff: a custom dropdown built from plain divs that a keyboard cannot open, an arrow key cannot move through, and a screen reader announces as nothing at all. This guide walks the patterns mature products use to keep dropdowns, selects and menus fast to open, easy to search, obvious to read and usable by everyone — each shown with real SaaS screenshots so you can see how shipped tools actually handle them.

First, decide which control you actually need

Before styling a single chevron, the decision that prevents most dropdown problems is which of three controls the situation calls for, because they look alike and behave differently. A select is for choosing a value from a known set — a status, a plan, a role — where the point is the value that stays behind after you close it. A combobox is a select that lets you type to filter, and it is the right choice the moment the option count gets past what a person can comfortably scan (roughly a dozen), or when the options are things people already know by name — a country, a currency, a user, a repository — and would rather type than scroll to. An action menu is not a value at all: it is the "…" or right-click list of things you can do to an object — rename, duplicate, archive, delete — and it should never masquerade as a select, because its items are verbs that fire immediately, not a choice that persists. Products feel coherent when the control matches the intent: pick-a-value gets a select, pick-from-many gets a searchable combobox, and do-something gets a menu. Get this wrong and no amount of polish will fix the friction; get it right and most of the rest follows naturally.

Confluence Navigation screen with real SaaS Document Management UI patterns - SaaSUI design example
Confluence logo
Confluence
Document Management·Navigation
View all

Confluence — a real navigation screen from the SaaSUI library.

Reach for the native control before building a custom one

The most reliable dropdown is often the one you do not build. A native select comes with keyboard support, screen-reader semantics, correct mobile behaviour (the OS wheel or full-screen picker), and viewport-aware positioning for free — all the things custom dropdowns most commonly get wrong. The honest tradeoff is that native selects are hard to style richly and cannot show search, option groups with custom markup, icons, avatars or multi-select the way a designed component can. So the rule of thumb that keeps you out of trouble is: use the native control when the options are a short, plain list and the only need is picking one value, and only reach for a custom component when you genuinely need what native cannot do — filtering a long list, multi-select, rich option content, or tight brand styling. When you do build custom, the bar is that you must re-implement everything native gave you: focus management, keyboard interaction, screen-reader roles, mobile ergonomics and positioning. Most broken dropdowns are custom components that took the styling freedom and skipped the parts native handled silently — treat native as the default and custom as a deliberate, fully-implemented choice rather than a reflex.

Cycle Navigation screen with real SaaS App Experience UI patterns - SaaSUI design example
Cycle logo
Cycle
App Experience·Navigation
View all

Cycle — a real navigation screen from the SaaSUI library.

Make the closed state show the choice, not just the label

A select spends almost all of its life closed, so the closed state is the part that matters most and the part weak implementations neglect. When it is closed, the field should show the current value clearly — "In Progress", "Owner: Priya", "Pacific Time" — not a static label that makes you open the menu again just to remember what you chose. There is a real difference between a placeholder and a value: a placeholder ("Select a status…") is muted, signals nothing is chosen yet, and must not look like a real selection; a chosen value is full-strength text that reads as settled. Blurring the two — a default that looks like a placeholder, or a placeholder styled like a value — is a common source of "wait, did I pick something?" doubt. For multi-select, the closed state has more work to do: show the actual selections when a few fit (as chips or a comma list) and fall back to a clear summary ("3 labels") only when they overflow, with the full set one click away — never collapse straight to a bare count that hides what is selected. The test is simple: a person should be able to glance at a closed dropdown and know their choice without opening it.

MakeForms Navigation screen with real SaaS Form Builder UI patterns - SaaSUI design example
MakeForms logo
MakeForms
Form Builder·Navigation
View all

MakeForms — a real navigation screen from the SaaSUI library.

Add search, grouping and clear affordances once the list gets long

A dropdown is comfortable at a handful of options and becomes a chore as the count climbs, so how a product handles a long list is what separates a considered picker from a scroll-trap. The first move, past roughly a dozen options, is to make it a combobox: put a text input at the top that filters as you type, so a person can jump to "Germany" or "@design-team" in two keystrokes instead of scrolling. Filtering should be forgiving — match anywhere in the string, tolerate case and minor typos where you can — and it needs a real no-results state that says "No matches" (and ideally offers a way to create or clear) rather than an empty void that reads as broken. For lists with natural structure, group the options under clear headings — recent, favourites, by category, by team — so scanning has landmarks instead of one long undifferentiated column; a "recently used" or "suggested" group at the top quietly handles the majority of real choices. And keep the affordances honest: a visible chevron so the field reads as openable, a scrollbar or fade when the list exceeds the visible area so people know more exists below, and a clear/reset control when a choice is optional. Long lists are where dropdowns most often fail, and search-plus-grouping is what keeps them usable at any length.

perplexity ai screenshot 14
Perplexity.ai logo
Perplexity.ai
Artificial Intelligence·Navigation
View all

Perplexity.ai — a real navigation screen from the SaaSUI library.

Handle single versus multi-select as distinct interactions

Single-select and multi-select feel similar but behave differently, and treating multi-select as "a select where you can click more than one" is where it breaks. In a single-select, choosing an option is the end of the interaction: the value is set and the menu closes, because there is nothing more to decide. In a multi-select, choosing an option is the middle of the interaction: the menu should stay open so a person can pick several without reopening it each time, each option should carry an unambiguous checked state (a checkbox or check mark, not just a highlight), and the selected items need to be visible — as chips in the field or a running summary — with an easy way to remove any one of them. The two also want different closed states, different empty states ("None selected" versus a placeholder), and often a "select all / clear all" for multi. The mistake to avoid is a hybrid that closes on first pick when people expected to add more, or a multi-select that hides what is chosen so thoroughly that removing one selection means reopening and hunting. Decide which one the field is, then commit to that full set of behaviour rather than bolting extra selections onto a single-select.

Slite Navigation screen with real SaaS Document Management UI patterns - SaaSUI design example
Slite logo
Slite
Document Management·Navigation
View all

Slite — a real navigation screen from the SaaSUI library.

Position the menu so it never opens off the screen

A dropdown that opens into the edge of the viewport and clips its options is one of the most common and most avoidable failures, and getting positioning right is quiet, essential craft. The menu should open adjacent to its trigger and, critically, be viewport-aware: if there is not enough room below, it flips to open upward; if it would run off the right edge, it shifts left to stay on-screen; and if the list is taller than the available space, it becomes internally scrollable rather than extending past the boundary. On short viewports and mobile, the better answer is often to stop trying to anchor a tall list to a small trigger at all and present it as a bottom sheet or full-screen picker with room to breathe and a comfortable touch target for every option. Two related details separate polished pickers from janky ones: the menu should not cause the page to shift or scroll when it opens, and it should close predictably — on selection (for single-select), on outside click, and on Escape — rather than lingering or trapping focus. Positioning is invisible when it works and glaring when it does not; the standard to hold is that the full list is always reachable, on any screen size, without the person fighting the edge of the window.

Show loading and empty states for options that arrive asynchronously

Many SaaS dropdowns do not have their options up front — an assignee list, a repository picker, a customer search — they fetch them, often as the person types, and how that async moment is handled decides whether the control feels alive or broken. When options are loading, the menu should say so with an inline spinner or skeleton rather than showing an empty list that reads as "no options exist"; the two look identical to a user and mean opposite things. For type-to-search fields hitting a server, debounce the query so you are not firing a request per keystroke, keep the input responsive while results arrive, and make sure a slow or failed fetch surfaces a real state — "Could not load options — retry" — instead of a permanent empty dropdown. And distinguish the genuine no-results case ("No customers match that name") from the loading case and from the not-yet-typed case, because each wants different copy and a different next step (create, clear, keep typing). The principle is that an async dropdown should always tell the truth about what state it is in — loading, empty, error, or ready — so a person never mistakes "still fetching" or "request failed" for "there is nothing here."

Make the whole thing keyboard- and screen-reader-accessible

Dropdowns are a defined interaction pattern with real expectations, and honouring them is what makes the control work for keyboard and assistive-technology users instead of only for a mouse — the area where custom components most often fail. The baseline is that the trigger is focusable and opens on Enter, Space or the down arrow; arrow keys move through the options with the active option clearly highlighted; Enter selects; Escape closes and returns focus to the trigger; and typing a letter jumps to matching options in a plain select. Under the hood the right roles and relationships must be present so a screen reader announces the control as a select or combobox, reads each option and its selected state, and reports how many options there are and which is active — a picker built from unlabelled divs announces as nothing and is unusable without sight. For a filtering combobox, the input and the option list need the combobox/listbox relationship so typing, active-option tracking and selection are all announced correctly. Accessibility here is not a coat of ARIA on top; it is focus management, keyboard interaction and semantics designed in from the start — and because these patterns are well specified, the work is implementing them rather than inventing them. A dropdown that only responds to a click is only finished for some of your users.

The details that separate a trustworthy dropdown from a box with a chevron

Each decision above is simple on its own; a dropdown feels trustworthy when they are all handled together. These are the behaviours mature select, combobox and menu implementations share.

  • The control matches the intent: pick-a-value gets a select, pick-from-many gets a searchable combobox, and do-something gets an action menu — never a menu disguised as a select or vice versa.
  • Native selects are used for short, plain, single-value lists; custom components are a deliberate choice that re-implements keyboard, screen-reader, mobile and positioning behaviour, not just styling.
  • The closed state shows the actual chosen value (or real chips/summary for multi-select), with placeholder and selected value visually distinct — a person knows their choice without reopening.
  • Lists past ~12 options become type-to-filter comboboxes, with forgiving matching, a real "no results" state, and logical grouping (recent/suggested/by category) for structure.
  • Single-select closes on choose; multi-select stays open, shows checked states, keeps selections visible and removable, and offers select-all/clear where useful.
  • The menu is viewport-aware: it flips up, shifts in, or scrolls internally so the full list is always reachable, and becomes a sheet/full-screen picker on mobile.
  • Async options show honest loading, error and empty states (debounced search, retry on failure) so "fetching" or "failed" is never mistaken for "nothing here".
  • Opening and closing are predictable — open on click/Enter/arrow, close on select/outside-click/Escape — without shifting the page or trapping focus.
  • The full keyboard/ARIA contract is implemented: focusable trigger, arrow navigation, type-ahead, Enter/Escape, correct combobox/listbox roles and announced selection state.

Common SaaS dropdown & select mistakes

  • Using one chevron-box for three different jobs — a menu that fires actions styled identically to a select that holds a value — so people cannot predict what clicking will do.
  • A closed state that shows a static label instead of the chosen value, forcing people to reopen the menu just to see what they picked.
  • A long list (countries, timezones, users) with no search, turning a two-keystroke choice into a scroll-and-hunt.
  • A menu that opens into the bottom or right edge of the viewport and clips its options instead of flipping or shifting on-screen.
  • A multi-select that closes on first pick, hides selections behind a bare count, or has no clear way to remove one choice.
  • An async dropdown that shows an empty list while loading or after a failed fetch, so "still loading" and "request failed" look identical to "no options".
  • Placeholder and selected value styled the same, leaving people unsure whether they have actually chosen anything.
  • A custom dropdown built from plain divs with no keyboard support, focus management or roles, unusable by keyboard and screen-reader users.

Frequently asked questions

When should I use a native select versus a custom dropdown?

Use a native select when the options are a short, plain list and the only job is picking one value: it gives you keyboard support, screen-reader semantics, correct mobile pickers and viewport-aware positioning for free, and those are exactly the things custom dropdowns most often get wrong. Reach for a custom component only when you genuinely need something native cannot do — type-to-filter search on a long list, multi-select, rich option content like icons or avatars, option grouping with custom markup, or tight brand styling. The catch is that a custom dropdown is only acceptable if it re-implements everything native handed you: focus and keyboard behaviour, ARIA roles, mobile ergonomics and edge-aware positioning. Most broken dropdowns are custom components that took the styling freedom and quietly dropped the accessibility and positioning native provided. Treat native as the default and custom as a deliberate, fully-implemented decision rather than an automatic one.

At what point should a dropdown become searchable?

The practical threshold is roughly a dozen options, or sooner if the options are things people already know by name. Below about a dozen short, scannable items, a plain menu is faster than typing. Once the list grows past what a person can comfortably eye-scan — or when the options are countries, timezones, users, repositories, currencies and other named entities people would rather type than hunt for — add a filter input at the top and make it a combobox, so choosing becomes "type two letters and hit enter" instead of scrolling. Pair the search with forgiving matching (match anywhere in the string, tolerate case and small typos), a genuine "no results" state that offers a next step, and logical grouping or a "recent/suggested" cluster at the top for the common picks. The goal is that the effort of choosing stays flat no matter how long the underlying list is.

How should multi-select differ from single-select?

They are different interactions, not the same control with more clicks allowed. In a single-select the choice is the end of the interaction, so selecting an option sets the value and closes the menu. In a multi-select the choice is the middle of the interaction, so the menu should stay open while a person picks several, each option needs an explicit checked state (a checkbox or check mark rather than just a highlight), and the selected items must stay visible and individually removable — as chips in the field or a running summary — often with a select-all or clear-all for convenience. They also want different closed states and empty copy ("None selected" versus a placeholder). The mistake to avoid is a hybrid that behaves like a single-select — closing on the first pick when people expected to keep adding — or a multi-select that hides its selections so completely that removing one means reopening and searching. Decide which the field is, then implement that control fully.

Study real SaaS dropdowns, selects and menus in the SaaSUI library

Every pattern above is easier to apply when you can see how real products solved it. Browse real dropdown, select, combobox and action-menu implementations — searchable long lists, multi-select with visible chips, viewport-aware positioning, async option loading, and full keyboard behaviour — from shipped SaaS applications like Linear, Notion, Stripe, Asana and other picker-heavy tools in the SaaSUI.Design library, with real screenshots instead of mockups, to study how mature products keep selection fast to open, easy to search, and obvious to read.

Rakesh Mondal

Written by

Rakesh Mondal

Ai Native SaaS UX UI Product Designer

Connect on LinkedIn

Interested in sponsoring SaaSUI.Design? Learn about sponsorship options →