Edge states
The states a screen falls into when things aren't perfect — empty, loading, offline, error, half-finished. They're the difference between an app that feels reliable and one that feels broken. Catch them before engineering, not after a user hits them in a market with one bar of signal.
The checklist
Run every screen and component against this list. For each one, decide: does this apply here, and if so, how is it handled?
EmptyNo data yet — say why, and give one next step.
LoadingShow progress, keep layout stable, block repeat taps.
OfflineKeep working and reassure the user it will sync.
ErrorPlain-language cause plus a way forward (Retry).
SuccessConfirm it worked; echo back what was saved.
Partial completionSave what is done; make resuming obvious.
Duplicate entryDetect and dedupe — never record the same sale twice.
Missing amountBlock save with a clear, specific message.
Missing customerAllow it if optional; never hard-fail silently.
Ambiguous cash / changeMake the figure being recorded unmistakable.
User changes their mindEasy cancel / undo without losing other input.
User enters wrong informationEasy to edit or correct after the fact.
Data sync delayShow pending / synced status honestly.
Burmese text expansionLayout holds at 1.3–1.7× length.
Small screen overflowContent scrolls or wraps; nothing clips.
Interrupted flowResume where they left off; don't lose work.
No data yet (first run)An empty state that onboards — not a blank screen.
How to use it
- Per component — each component page lists the edge cases it handles in its Edge cases section. Reuse those; don't reinvent them.
- Per screen — before building a screen, note which states above apply and design each one. A screen isn't "done" until its edge states are.
- The two that bite hardest — a missing empty/loading state (the screen looks broken) and a swallowed error or offline path (the user is stuck with no way forward).
A cleaner screen that drops an edge state isn't cleaner — it's broken
When simplifying a screen, never silently remove an edge case, a recovery path, or the user's next action. That's the #1 risk with AI-generated UI, and it's exactly what the States foundation and these rules exist to prevent.