| UI or UX | UI + UX - Structured postal or contact address capture flow | UI + UX - Single-line freeform data-entry control | UI + UX - Input widget with suggestion behavior | UI + UX - Controlling and dependent form fields |
| UI guidance | Render address capture as a labelled fieldset or page section with address line, locality, region when needed, postal code, country, and an address lookup only when its coverage is clear. | 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. | Render a labeled text field, suggestion popup, highlighted option, selected value, and no-match state. | Place the controlling field before the dependent field, label both clearly, and explain the dependency in helper text such as Choose a category first to see valid subcategories. |
| UX guidance | Use address entry when the service needs a complete address for delivery, billing, correspondence, identity, eligibility, routing, tax, or account records and downstream systems need reliable address parts. | Use text input for short freeform answers that users can type or paste and that cannot be accurately represented as a fixed option choice. | Help users complete a known value faster without forcing an incorrect suggestion. | Use dependent fields to prevent impossible combinations and guide users through valid answer pairs without forcing them to learn backend data rules. |
| Good UI | A benefits claim asks for postcode lookup, lists matching addresses, includes Enter address manually, and then shows editable address line 1, address line 2, town or city, postcode, and country. | A reference-name field has a visible label, hint, medium width, focus ring, and error message beneath the hint when submitted empty. | Persistent label above the input, readable text size, clear popup alignment, and visible highlighted option. | An incident form asks Category first, then Subcategory shows only options for that category and says why it was cleared after Category changed. |
| Bad UI | A form has one full-width Address field with placeholder-only instructions and no country, postcode, apartment, or manual recovery path. | The only instruction is placeholder text that disappears when the user starts typing. | Placeholder-only label that disappears after typing. | A Subcategory dropdown appears disabled at page load with no explanation of which Category unlocks it. |
| Good UX | A user enters SW1A1AA, sees several addresses, selects Flat 2, adds an organization name, and reviews the stored line, town, postcode, and country parts before continuing. | A user types or pastes a short reference, submits it, and the interface confirms the stored value without changing their wording. | Typing filters suggestions while preserving the exact typed value. | A user chooses Hardware, selects Laptop, switches Category to Network, sees Laptop cleared, and chooses VPN from the new valid list before submitting. |
| Bad UX | A user in a new building cannot proceed because the lookup cannot find the postcode and there is no manual entry option. | Validation fires on the first focus event and blocks typing before the user has had a chance to answer. | Automatically forcing the first suggestion into the field. | A user submits a record with Category Facilities and Subcategory VPN because the stale dependent value was hidden but not cleared. |
| Best fit | The product needs a complete postal, delivery, billing, service, or official contact address. | The answer is short and user-authored. | The list is long but values are known. | A downstream field's valid values or requirement depend on a previous answer. |
| Avoid when | The product only needs one short location label, room name, or delivery note. | The answer is a paragraph, comment, address block, or explanation requiring multiple lines. | The task is open-ended query exploration. | The choices are independent and users need to compare them together. |
| Required state | Initial state with country or domestic coverage explained and lookup or manual entry available. | Empty untouched state with persistent label and optional hint. | Empty input state. | No controlling answer selected, with dependent field unavailable or empty and prerequisite helper text. |
| Accessibility burden | Group related address fields with a clear heading or legend that states which address is being requested. | Associate every text input with a visible label or equivalent accessible name that matches the visible question. | Expose combobox expanded state, active descendant, and option labels. | Keep controlling and dependent fields in logical DOM order and use labels, hints, and descriptions that name the relationship. |
| Common misuse | Forcing every address through a domestic postcode or ZIP lookup. | Using placeholder text as the only label or instruction. | Forcing the first suggestion when the user did not choose it. | Leaving a stale dependent value selected after the controlling field changes. |