A data panel has more than two outcomes. It can be waiting, successfully empty, populated, or unable to load. Reusing the same blank screen for all four leaves people guessing.
State the actual condition
- Show a concise progress indicator when a request is pending and likely to take noticeable time.
- Explain an empty result and give a next step only when one is useful.
- Describe a load failure separately and offer a retry when repeating the request is safe.
Preserve context during recovery
Keep filters and user-entered values after a temporary failure. Avoid an indefinite spinner, and announce important updates to assistive technology without moving keyboard focus unexpectedly.
Test the slow, empty, failed, and successful paths with realistic timing. A useful state communicates what happened and what the person can do next, rather than exposing internal error codes.
