Edge Cases and States
Every design review shows LunchLoop's Today card on a perfect day: meal chosen, cook named, network fast, 34 minutes left to change. Real subscribers meet the other days: a holiday with no lunch, a cook who is ill, a phone on a train with no signal. Those are the days that decide whether people trust the product, so they need designing as much as the perfect one.
The rule
The happy state is one of many; design the rest on purpose.
Any screen that shows data moves through a set of interface states:
- Empty: nothing to show yet, or nothing today. Say why, and what to do next.
- Loading: data is on its way. Use a placeholder that keeps the layout steady so nothing jumps.
- Error: something failed. Say what happened, whether anything was saved or sent, and how to recover. Never throw away what the user typed.
- Partial: some data has arrived and some has not, such as the cook assigned but the menu not yet posted.
- Ideal: the happy state everyone designs first.
Controls have states too: default, pressed, focused, disabled, and a success or confirmation state.
Edge cases are rare but real conditions that push a design to its limits:
- Content extremes: a 60-character meal name, ₹0 credit, a four-digit credit balance.
- Time: exactly at the cutoff, a different time zone, a public holiday.
- People: the cook is ill, the subscriber has paused, a new user has no history.
- System: offline, slow, a double tap, a permission refused.
Each one gets a decision: design for it, handle it with a rule in the spec, or consciously accept it. What it must not get is silence.
The shortcut
Push each screen through six words: none, many, wrong, slow, late, twice. What if there is nothing? Too much? Something breaks? It takes ages? The deadline passes mid-task? The user acts twice?
None
No lunch today because of a holiday. Empty state: "No lunch today: kitchens are closed for the holiday. Your next lunch is on Monday."
Drills
Answer fast — trust the rule.
What should a good empty state include?
A subscriber taps Change twice on a slow connection. What should the design specify?
Which of these is an edge case for the meal name?
What should a good error message do?
Remember
- The happy state is one of many; design the rest on purpose.
- Shortcut: none, many, wrong, slow, late, twice.
- Trap: leaving empty, loading and error states for developers to invent at the last minute.
