Blank is not neutral
An empty inbox with no guidance feels broken. An error that says “Something went wrong” teaches nothing.
Empty states that work
- Say why it is empty (“No invoices yet”)
- Offer the next action (“Create invoice”)
- Teach one concept if the feature is new
- Avoid illustrating failure with sad illustrations that mock the user
Errors with a spine
- What failed, in human language
- Whether to retry, edit input, or contact support
- Reference id for support when relevant
- Keep destructive detail out of the UI; log it server-side
Consistency across platforms
Web and mobile should share tone even if components differ. A voice guide for errors prevents each developer inventing a new personality.
Rayaxis includes these states in scope — they are not “nice to have polish” after launch.