App errors occur independent of user input.
General app error
When an error occurs, an app should display loading indicators until the error message appears.
Features not available may be represented in the UI. Not every error requires a new component to pop up.
If possible, give your user an action that will help them address the error.
Alert dialog: app feedback about an error that is blocking normal operation
Snackbar: app feedback about a peripheral error. Snackbars are transient, don't use them for critical, persistent, or bulk errors.
Sync error/failure to load
When sync is down or content has failed to load, the user should be able to interact with as much of the rest of the app as possible.
Empty state for the screen/content failing to load.
Container/component specific error with action.
Connectivity
When connectivity is down, the user should be able to interact with as much of the rest of the app as possible.
If appropriate, present a link to help a user accomplish their task. Only offer links that you can actually support. For example, don't offer an option like "Try again" in cases where you can detect that the operation will fail.
Snackbar with action to retry
Empty state for a screen only available online