Disabled states

Overview

  • Avoid disabled states when possible
  • Don’t use disabled state for actions that aren’t currently available but will be available if the user does something on the page, ex: completes all form fields and resolves all errors.
    • Instead, use errors to surface the missing or wrong fields.
  • The surrounding interface and the hint/tooltip should clearly explain why a component is disabled and what the user needs to do for it to become active.

 

How to avoid disabled states

Guide the user on the correct path using plain text, inline alerts, hints and tooltips. If you are not sure if you can avoid disabling a component, reach out to the design team to brainstorm alternatives.

 

Buttons

Example #1

Context: Only 30 days can be chosen at a time

  • Do: Keep the button enabled and explain what the user can do (added note below “custom”). Reinforce this with disabling the dates that can’t be selected once a first date is chosen.
  • Don’t: Disable the button and surface an error if over 30 days are chosen.
Do
Disabled-DoDont-Button-Do

 

Don’t
Disabled-DoDont-Button-Dont

Example #2

Context: Form to fill out with mandatory fields

  • Do: Clearly show that a field is mandatory and keep the button enabled. If necessary, surface an error after clicking for the necessary field.
  • Don’t: Disable the button, not allowing the user to continue without proper context

Do:

Disabled-Example-SubmitNextSave

Don’t:

Disabled-Example-SubmitNextSave

Text inputs

Context: Linked text field and button to indicate an email was sent, not allowing to send it a second time to avoid spamming.

  • Do: make the button reflect an in progress state and a success pill. Keep the text field editable.
  • Don’t: disable the text field after the email has been sent, using the button as a way of showing the action was already done.
Do
Disabled-DoDont-TextInputs-Do

 

Don’t
Disabled-DoDont-TextInputs-Dont

 

Checkboxes

In the example below, Text messages are no longer available as a setting in the native phone app. Rather than disabling the checkbox, try using plain text.

 

Example 1

Do
Disabled-DoDont-Checkboxes1-Do

 

Don’t
Disabled-DoDont-Checkboxes1-Dont

 

Example 2

In the example below, settings that are available in a paid plan are disabled. Instead, try grouping paid-for settings in a section called “Advanced Settings” and adding a link to upgrade.

Do
Disabled-DoDont-Checkboxes2-Do

 

Don’t
Disabled-DoDont-Checkboxes2-Dont