Files

12 KiB

UI & UX Guidelines

  • Design for clarity first.
  • Prefer simple, modern and predictable interfaces.
  • Optimize for fast understanding and low cognitive load.
  • Every screen should have a clear primary purpose.
  • Every important action should be easy to discover.
  • Prefer familiar interaction patterns over novel ones.
  • Do not require users to learn unnecessary custom behavior.
  • Keep layouts visually calm and structured.
  • Use consistent spacing, typography, colors and interaction patterns.
  • Avoid visual noise.
  • Avoid decorative elements that do not improve usability.
  • Avoid unnecessary complexity in navigation and workflows.
  • Minimize the number of steps required to complete common tasks.
  • Keep related information and actions close together.
  • Group content logically.
  • Use clear visual hierarchy.
  • Make primary actions visually distinct from secondary actions.
  • Avoid giving multiple actions equal visual priority when one is clearly more important.
  • Use whitespace intentionally.
  • Prefer readable line lengths and sufficient spacing.
  • Avoid dense walls of content.
  • Avoid oversized empty areas that reduce information efficiency.
  • Keep important information visible without unnecessary scrolling where practical.

Navigation

  • Navigation must be predictable and consistent.
  • Users should always understand where they are.
  • Users should always understand how to go back.
  • Avoid hidden navigation when visible navigation is practical.
  • Keep navigation depth shallow where possible.
  • Use clear and descriptive navigation labels.
  • Do not use ambiguous icons without labels when meaning is not obvious.
  • Preserve navigation state when users return to a previous view where practical.
  • Avoid resetting filters, search state or scroll position unnecessarily.
  • Avoid unexpected redirects.
  • Do not change navigation behavior between similar screens without a clear reason.

Actions

  • Use clear action labels.
  • Prefer verbs that describe the actual outcome.
  • Avoid vague labels such as OK, Submit, Proceed or Execute when a more specific label is possible.
  • Make destructive actions clearly distinguishable.
  • Keep dangerous actions away from common actions.
  • Require confirmation for destructive or difficult-to-reverse actions.
  • Do not require unnecessary confirmation for safe, reversible actions.
  • Disable unavailable actions when the reason is obvious.
  • Explain why an action is unavailable when it is not obvious.
  • Avoid actions that appear clickable but are not.
  • Provide immediate visual feedback after user actions.
  • Prevent accidental duplicate submissions.
  • Make loading, success and failure states visible.

Forms

  • Keep forms as short as practical.
  • Ask only for information that is actually required.
  • Group related fields together.
  • Use clear field labels.
  • Do not rely on placeholders as the only label.
  • Use appropriate input controls for the expected value.
  • Provide useful defaults where safe and predictable.
  • Preserve user input when validation or network errors occur.
  • Validate fields at useful moments without interrupting normal input.
  • Show validation errors close to the affected field.
  • Explain how to fix invalid input.
  • Avoid technical validation messages.
  • Clearly mark optional fields where useful.
  • Avoid asking the same information multiple times.
  • Use autocomplete and autofill where appropriate.
  • Make keyboard navigation logical.
  • Use sensible tab order.
  • Support Enter and Escape behavior where users expect it.

Content and Language

  • Use plain, concise language.
  • Prefer user terminology over internal technical terminology.
  • Avoid jargon unless the target users are expected to understand it.
  • Use consistent naming for the same concepts.
  • Do not rename concepts between screens.
  • Keep button labels, headings and descriptions concise.
  • Put the most important information first.
  • Avoid unnecessary explanatory text.
  • Add explanation only where users may reasonably be confused.
  • Error messages should explain what happened and what the user can do next.
  • Avoid blaming the user.
  • Avoid exposing stack traces, exception names or internal implementation details.

Feedback and System State

  • Always communicate important system state.
  • Show loading states for operations that are not immediate.
  • Avoid indefinite loading indicators without context.
  • Use progress indicators for longer operations where progress can be measured.
  • Clearly distinguish loading, empty, error and success states.
  • Do not leave blank screens where an empty state is expected.
  • Empty states should explain what the user can do next.
  • Show success feedback when the result is not otherwise obvious.
  • Keep transient notifications concise.
  • Do not hide important errors in temporary notifications.
  • Preserve actionable errors until the user has had a chance to understand them.
  • Do not silently fail.
  • Do not silently discard user input.

Responsiveness

  • The interface should feel responsive at all times.
  • Provide immediate feedback after interaction.
  • Avoid blocking the entire interface when only one section is loading.
  • Prefer localized loading states.
  • Use optimistic UI only when failures can be handled safely.
  • Avoid layout jumps during loading.
  • Reserve space for content where practical.
  • Keep animations short and functional.
  • Do not use animations that delay task completion.
  • Respect reduced-motion preferences.
  • Avoid unnecessary transitions and visual effects.

Visual Design

  • Prefer modern, clean and restrained visual design.
  • Use a consistent design system.
  • Keep typography hierarchy clear.
  • Maintain sufficient contrast.
  • Use color intentionally.
  • Do not rely on color alone to communicate state.
  • Keep the number of accent colors limited.
  • Avoid excessive gradients, shadows and decorative effects.
  • Use rounded corners, borders and elevation consistently.
  • Keep icons stylistically consistent.
  • Use familiar icons for familiar actions.
  • Pair unclear icons with text labels.
  • Avoid tiny click targets.
  • Keep interactive targets large enough for comfortable use.
  • Maintain consistent alignment.
  • Avoid arbitrary spacing values.
  • Prefer reusable spacing and sizing tokens.

Accessibility

  • Accessibility is part of the default design, not an optional enhancement.
  • Use semantic controls and elements.
  • Ensure full keyboard usability.
  • Maintain visible focus indicators.
  • Use sufficient color contrast.
  • Do not rely solely on hover interactions.
  • Do not rely solely on color to indicate status.
  • Provide accessible names for controls.
  • Keep focus order logical.
  • Move focus intentionally after dialogs, navigation or major state changes.
  • Support screen readers where applicable.
  • Use ARIA only when native semantics are insufficient.
  • Respect reduced-motion and system accessibility preferences.
  • Avoid flashing or distracting content.

Responsive Design

  • Design for the available viewport instead of fixed screen sizes.
  • Prioritize important content on smaller screens.
  • Avoid horizontal scrolling unless the content genuinely requires it.
  • Keep controls usable on touch devices.
  • Do not simply shrink desktop layouts.
  • Adapt navigation and layout intentionally for smaller screens.
  • Preserve core functionality across supported screen sizes.
  • Avoid hiding important actions solely because space is limited.
  • Test common breakpoints and extreme content lengths.

Tables and Data-Dense Views

  • Use tables only for genuinely tabular data.
  • Keep column names concise.
  • Align numeric data consistently.
  • Make sorting and filtering discoverable.
  • Preserve filter and sort state where useful.
  • Do not overload tables with too many actions.
  • Prefer a clear primary row action and secondary contextual actions.
  • Keep important columns visible.
  • Allow horizontal scrolling only when necessary.
  • Use pagination, virtualization or incremental loading for large data sets.
  • Provide clear empty states.
  • Avoid showing unnecessary columns by default.
  • Use sensible formatting for dates, numbers and units.

Search and Filtering

  • Search should behave predictably.
  • Make active filters visible.
  • Make filters easy to remove.
  • Provide a clear way to reset filters.
  • Preserve search and filter state when navigating back where practical.
  • Avoid requiring users to configure many filters before seeing results.
  • Use sensible defaults.
  • Clearly distinguish no results from loading or errors.
  • Suggest recovery options when no results are found.

Dialogs and Modals

  • Use dialogs only when interruption is justified.
  • Avoid stacking dialogs.
  • Keep dialogs focused on one decision or task.
  • Use clear titles.
  • Keep primary and secondary actions obvious.
  • Make cancellation easy.
  • Support Escape where appropriate.
  • Do not use dialogs for information that belongs inline.
  • Avoid large workflows inside modal dialogs.
  • Do not close dialogs unexpectedly while users are entering data.

Destructive Actions

  • Clearly label destructive actions.
  • Use confirmations for irreversible or high-impact operations.
  • Explain the consequence before confirmation.
  • Prefer reversible actions when possible.
  • Offer undo where practical.
  • Do not use generic confirmation text for destructive operations.
  • Make the safe action visually distinct.
  • Do not preselect destructive choices.

Error Prevention

  • Prevent invalid actions before they occur where practical.
  • Use constraints and suitable controls instead of relying only on validation errors.
  • Provide sensible defaults.
  • Confirm only high-impact decisions.
  • Warn users before losing unsaved changes.
  • Do not clear entered data unexpectedly.
  • Avoid ambiguous state transitions.
  • Make dependencies between fields or actions visible.

Consistency

  • Similar problems should have similar UI solutions.
  • Similar actions should use the same wording and placement.
  • Do not introduce custom patterns when an existing pattern already solves the problem.
  • Reuse components and design tokens.
  • Keep interaction behavior consistent across the application.
  • Preserve platform conventions unless there is a strong reason not to.

User Control

  • Keep users in control of important actions.
  • Do not perform surprising destructive actions automatically.
  • Do not change user data without a clear action or established behavior.
  • Make automatic behavior visible when it materially affects the user.
  • Allow users to cancel long-running operations where practical.
  • Allow recovery from mistakes where possible.
  • Avoid dark patterns.
  • Never manipulate users into actions they did not intend.

Progressive Disclosure

  • Show the most important options first.
  • Hide advanced complexity until it is needed.
  • Do not overwhelm users with every possible setting at once.
  • Keep advanced options discoverable.
  • Avoid forcing expert workflows on normal users.
  • Avoid hiding frequently used functionality behind excessive menus.

Performance Perception

  • Optimize perceived performance as well as actual performance.
  • Show useful content as early as possible.
  • Avoid blocking initial rendering on non-critical data.
  • Use skeletons only when they improve comprehension.
  • Avoid fake progress.
  • Do not use loading animations to mask avoidable slowness.
  • Keep interactions responsive even while background work continues.

Defaults

  • Choose safe and sensible defaults.
  • Defaults should match the most common expected user intent.
  • Avoid defaults with destructive consequences.
  • Preserve user preferences when appropriate.
  • Do not force repeated configuration for common workflows.

Design Decision Rule

  • Every UI element should have a clear purpose.
  • Every additional interaction adds cognitive cost.
  • Prefer removing complexity over explaining unnecessary complexity.
  • Prefer familiar patterns over clever ones.
  • Prefer fewer clear choices over many ambiguous choices.
  • Prefer predictable behavior over surprising automation.
  • If a design decision introduces ambiguity, unnecessary complexity, or multiple equally valid UX directions, ask the user instead of deciding autonomously.

Priority Order

Prioritize UI/UX decisions in this order:

  • Correctness
  • Clarity
  • Safety
  • Accessibility
  • User control
  • Task efficiency
  • Consistency
  • Responsiveness
  • Visual polish

Visual polish must never reduce usability.