Key insights
- A blank screen reads as broken — users can't tell "nothing here yet" apart from a real failure. One small illustration or icon signals the empty state is intentional.
- Write like a product, not a log file. Swap corporate error copy ("No items found. Result set empty.") for a warm, human line that matches your brand voice.
- Every empty state needs a primary action — not a "Try refreshing" button, but the next step the user would take if they knew what to do (e.g. "+ New project").
- There are four kinds of empty: first run, no results, error, and filtered-out. Each deserves its own copy and CTA — don't ship one generic screen for all of them.
- The empty state is your best onboarding moment. Show a ghost preview of what a real item will look like to teach the feature before users ever touch it.
Do / Don't
- Do: Add a small illustration or icon so the screen reads as intentional, not broken
- Do: Give every empty state one clear primary CTA that points to the next real step
- Do: Tailor the copy and action to the context — first run, no results, error, or filtered-out
- Don't: Leave a bare "No data" or blank body with no visual or guidance
- Don't: Rely on a generic "Try refreshing" as the only available action
- Don't: Write cold, log-file copy like "ERROR 404 — Result set empty."