Loading / Empty / Error States
AI-built UIs handle the happy path and crash on the other three. Design all four:
- Loading — skeletons that match the final layout (not a centered spinner that shifts everything).
- Empty — a real first-run state: what it is, and the one action to fill it. Not a blank box.
- Error — what failed, in human terms, plus a retry. Never a raw stack trace or silent nothing.
- Partial — slow/streaming data, optimistic updates that can roll back. For each fetch in the diff, confirm all four exist. The empty and error states are where products feel broken.