| UI or UX | UI + UX - Two-pane item transfer and selected-set review | UI + UX - Multi-value picker widget | UI + UX - Visible selectable option list | UI + UX - Multiple-choice form control |
| UI guidance | Render two clearly labelled panes for available items and selected items, with item counts, selected-row state, disabled move state, and action buttons positioned between or near the panes. | Render a filter input, open option list, selected-value chips, remove controls, checked option states, clear-all control, and validation state. | Render a labelled listbox container, visible options, active option styling, selected option state, optional grouped labels, empty or disabled states, and nearby help or error text. | Render visible native checkboxes with labels, checked states, group legend, select-all-that-apply hint, and group validation state. |
| UX guidance | Use a transfer list when users must build a selected set by moving items from one visible collection to another and then review what will be submitted. | Help users choose multiple values from a large, compact, or dynamic option set. | Use a listbox when users benefit from seeing the available options while moving focus through the list and selecting one or more static values. | Let users choose independent options and review the selected set before submitting. |
| Good UI | A permissions editor shows Available permissions on the left, Selected permissions on the right, selected counts in both headers, Add and Remove buttons between panes, and Move up and Move down controls for selected permissions. | Selected values are shown as removable chips or checked rows with clear labels. | A Role listbox has a visible label, five role options, one active row, one selected row, concise option names, and a status line explaining whether focus or selection changed. | Visible checkboxes with large hit areas, persistent labels, group legend, and aligned helper text. |
| Bad UI | A form shows one long source list and a tiny submitted count, so users cannot review which items were moved before saving. | Selected values hidden inside a closed dropdown. | Each option row contains nested Edit and Delete buttons, making the listbox a broken table of actions. | Tiny custom boxes that are hard to target. |
| Good UX | A user selects Billing and Audit logs, activates Add, hears that two permissions moved to Selected, and focus stays in a useful place for adding another permission. | Users can search, add, remove, review, and submit multiple values without losing context. | A user arrows from Analyst to Support, hears the active option change, then presses Select active option to commit Support. | Clicking the label toggles the checkbox. |
| Bad UX | A user removes the only required item and the form waits until final submit to reveal the selected set is invalid. | Removing a value is impossible by keyboard. | A high-stakes role assignment saves as soon as focus moves while the user is only exploring options. | Using checkboxes for mutually exclusive choices. |
| Best fit | Users build a selected set by moving items from an available collection to a selected collection. | Users choose many values from a long predefined list. | Users choose one option from a visible static list. | Users can choose zero, one, or many options. |
| Avoid when | The option set is short enough for a checkbox group. | The set is short and independent choices should stay visible. | A native select, radio group, or checkbox group can satisfy the interaction. | Only one option can be selected. |
| Required state | Available list initial state with label, count, and selectable options. | No selected values state with empty selected set. | Empty or initial state with visible label and at least one option. | Unchecked option state. |
| Accessibility burden | Give each list pane a visible label and programmatic accessible name. | Expose selected state for options and labels for remove controls. | Use role listbox on the container and role option on every selectable item. | Use programmatic labels for every checkbox. |
| Common misuse | Using transfer list for a short yes-or-no set that should be checkboxes. | Hiding selected values inside a closed menu. | Using listbox when native select, radio buttons, or checkboxes would do the job with less risk. | Using checkboxes for mutually exclusive choices. |