Any system with user interface has certain state at any given point in time. Usually its state changes over time by external factors or with user actions. Users need to understand system's current state to be able to perform meaningful actions upon it.

In this case user interface is like an imperfect magnifying glass that allows you to look at the snapshot of the system at its current state.

System state is changing over time

So it all goes down to how full is the picture that user sees while working with the system via its user interface.

To act efficiently, the user must see the most recent version of the system possible

Do not hide data that is already available to the user.

Some examples of the existing state of the system:

  • Validation error in the input field. If it is known that the field has error, it should be visible permanently.

  • Some setting was just saved. It should be clear that currently there are no new unsaved changes. On the other hand, if there was an error while saving changes, it should be clear that current changes were not saved.

All valuable information about the current state should be visible, identifiable and persistent.