In progress

Errors occur after someone has taken an action and our product fails. Clear feedback to users increases their trust and engagement in our products.

Clearly communicate where it happened, what happened, when it happened, why it happened, and what someone can do next.

Guidelines

  • Clearly communicate what happened. If we know what happened, tell the customer.
  • Represent the highest severity error first, and display errors in descending severity order successively.
  • When possible, use proximity to address errors where they occur.
  • Always present an action or next step to the user. (Even if it’s to refresh the page, try again at a later time, or contact support)
  • Preserve as much of someone’s input as possible.
Do Use
  • Inline field errors
  • NotificationBar
  • Full page takeovers
Don't Use
  • Modals to display your error. Most errors don’t need to prevent someone from interacting with the rest of the page.
  • App notifications. Most errors should be displayed when a user encounters them.
  • Toasts. These are used as confirmation for when an action has been successful.

Determining error types

What is the scope and impact of an error? Is there something preventing a user from taking action, or a specific screen or feature that is failing?

Error types depend on the degree of user control and the severity of the issue.

Matrix showing tabulated data from Guidance for error patterns section below

Guidance for error patterns

LevelGuidanceExample
high severityUse more of the screen, including full takeover experiences.Loom.com is down (4)
low severityUse less of the screen; error inline alongside the problem when possible.A form is incomplete (1)
high user controlProvide direct guidance to users about what to do next.A user is on an unsupported browser (2)
low user controlTell someone why they’re seeing an error and what the next steps are.A user has tried to view a private video (3)

Common error types

Incorrect inputs

High user control, Low severity

If someone is trying to submit information inside an input that the system won’t accept, label the element with an error state and provide clear messaging on the appropriate format.

Examples

  • Exceeds character count → Showing the character count to the user
  • Character symbols not recognized by the input → Show which symbols can be accepted
  • Incomplete form → Highlight the fields missing information
Dos
  • Tell the user the appropriate information format in advance or when relevant.
  • Mark required fields as required.
  • Use a banner when there are multiple errors in a form.
Don'ts
  • Just tell them their input is invalid.
  • Call a general page-level error.
General page level error with large red band (NotificationBar component) across the top; reads Failed to load comment

Lens components

Permissions restrict content

Low User Control, Low Severity

When someone has tried to access a page or video that is unavailable to them based on their account.

Examples

A Viewer tries to access a video that a Creator set to private

Private video screen
Do
  • Tell them that the content is restricted
  • Show them which account is currently trying to access content
Don'ts
  • Tell them something is “unavailable” (unless for specific security reasons)

Admin/service unavailable

Low User Control, High Severity

When the entire application is unavailable do not display a page with many broken components. Replace the experience with a descriptive message to inform users, and redirect them is necessary.

Examples

  • Loom app is down (503)
  • Link is broken (401/3)
401/403 error page reads This loom has been deleted or archive with button to return to homepage
  • Page not found (404)
404 error page reads You weren't supposed to see this with links to go to library or check system status
Do Use
  • Explain what went wrong
  • Provide a next step, like troubleshooting, visiting loomstatus.com, or visiting the help center.
Don'ts
  • Use generic error copy

Internet connection interrupted

High User Control, Low Severity

We know the issue is on the user’s internet connection.

Examples

  • A user records a Loom but gets disconnected before they finish
  • A user tries to post a comment, but there’s no connection
Dos
  • Preserve as much of the user’s input or content as possible
  • Reassure them that we will post their content when they’re back online
Don'ts
  • Tell them something is “unavailable” (unless for specific security reasons)

Feature fails to load

Low User Control, Low Severity

We can render the rest of the page, but a feature on the page has failed to load. Place the error as close to the source as possible. If possible, provide a next step in the same place.

Examples

Engagement insights fails to load -> Display a message inside the feature

Loom of End of day update progress with Comments pane displaying error for View data and option to Refresh views pane
Dos
  • Offer a local way to reload the feature
Don'ts
  • Disable other features unless absolutely necessary
  • Crash the entire page

Unsupported browser

High User Control, High Severity

A user tries to use Loom.com on an unsupported web browser.

Examples

For our supported browsers page, we display the user’s current browser version to them. We also map this value into the support button. The support team can efficiently triage a customer’s concern with extra data that our product provides them.

Unsupported browser page showing which browsers we support and the user's current browser with a button to contact support
Dos
  • Be clear about what the user needs to do in order to access Loom.com.
  • Link to specific existing support policy.
  • Confirm which browser we see them on, and relay this data to support automatically if a user tries to contact them.
Don'ts
  • Tell users the site is broken.

Further reading

Troubleshooting as a user

When possible, provide a path forward for a user to begin resolving their problem. Be specific.

Examples

  • Include a relevant support article.
  • Display an error code that identifies the precise issue.
  • Redirect to loomstatus
  • Provide a way to contact support.

Note: We have a support team that we love. When redirecting customers to contact support, demonstrate stewardship over our product by including as much information as you can about the error.

Unsupported browser page showing which browsers we support and the user's current browser with a button to contact support For our supported browsers page, we display the user’s current browser version to them. We also map this value into the support button. The support team can efficiently triage a customer’s concern with extra data that our product provides them.

Displaying feedback to the user

Displaying multiple errors

Represent the highest severity error first, and display errors in descending severity order successively.

Here is a list of errors displayed in descending order of severity:

  1. No connection
  2. Loom is down
  3. Issue with a user’s account
  4. Access is restricted
  5. Feature fails to render
  6. Invalid input registered