| UI or UX | UI + UX - Single-value input widget with owned popup | UI + UX - Input widget with suggestion behavior | UI + UX - Single-choice dropdown control | UI + UX - Single-line freeform data-entry control |
| UI guidance | Render a persistent label, editable or select-only value surface, popup indicator, collapsed and expanded states, option popup, active option, committed selection, clear action when supported, help text, and error text. | Render a labeled text field, suggestion popup, highlighted option, selected value, and no-match state. | Render a persistent label, hint text, native closed value, finite option list, selected option, and validation state. | Render a persistent label, appropriately sized single-line input, optional hint, visible focus state, and nearby error text that is programmatically associated with the field. |
| UX guidance | Use a combobox when users need one value from a large or dynamic option set and benefit from opening a popup, typing to narrow it, or copying/editing the displayed value. | Help users complete a known value faster without forcing an incorrect suggestion. | Help users choose one value from a moderate known list without showing every option permanently. | Use text input for short freeform answers that users can type or paste and that cannot be accurately represented as a fixed option choice. |
| Good UI | An Assignee combobox shows a label, typed text, disclosure button, active option in a listbox, selected-value status, and an error when typed text has no accepted option. | Persistent label above the input, readable text size, clear popup alignment, and visible highlighted option. | Persistent label, hint text, visible selected value, readable options, and clear required validation state. | A reference-name field has a visible label, hint, medium width, focus ring, and error message beneath the hint when submitted empty. |
| Bad UI | A custom dropdown displays matching labels but never exposes expanded state, active option, or the controlled popup. | Placeholder-only label that disappears after typing. | Placeholder as the only label. | The only instruction is placeholder text that disappears when the user starts typing. |
| Good UX | A user types Ada, moves the active option with Arrow Down, presses Enter to accept Ada Lovelace, then edits the label and sees the selected ID clear until a new option is accepted. | Typing filters suggestions while preserving the exact typed value. | Users can open, scan, choose one value, and review the selected value after close. | A user types or pastes a short reference, submits it, and the interface confirms the stored value without changing their wording. |
| Bad UX | The component automatically commits the first match as soon as a user types one character. | Automatically forcing the first suggestion into the field. | Hiding two obvious critical choices in a dropdown. | Validation fires on the first focus event and blocks typing before the user has had a chance to answer. |
| Best fit | Users choose one value from a large, dynamic, or filterable option set. | The list is long but values are known. | The user chooses one option from a moderate known list. | The answer is short and user-authored. |
| Avoid when | The list is short enough for native select, radio buttons, or segmented controls. | The task is open-ended query exploration. | The option set is short and comparison matters. | The answer is a paragraph, comment, address block, or explanation requiring multiple lines. |
| Required state | Collapsed empty state with label, help text, and popup affordance. | Empty input state. | Closed state with empty option or current selected value. | Empty untouched state with persistent label and optional hint. |
| Accessibility burden | Expose the value surface with role combobox or a native control that maps correctly to combobox semantics. | Expose combobox expanded state, active descendant, and option labels. | Prefer native semantics or implement equivalent name, role, state, and keyboard behavior. | Associate every text input with a visible label or equivalent accessible name that matches the visible question. |
| Common misuse | Using a custom combobox for a short list where native select, radio buttons, or segmented controls would be simpler. | Forcing the first suggestion when the user did not choose it. | Custom select with no keyboard support or hidden selected state. | Using placeholder text as the only label or instruction. |