Skip to content
Aurelius Black
← Writing

Craft

The screens that decide whether your product feels finished

22 August 2026 · 6 min read

Two products can have the same features and feel worlds apart. The difference is almost never the happy path, which everyone builds. It is the states around it.

The moment before there is any data. The search that finds nothing. The request that failed halfway. The action you cannot undo. Get those right and the product feels considered. Skip them and it feels like a demo, however good the dashboard looks.

Empty is not one screen. It is three.

"No data" gets treated as a single screen. It is at least three, and they need different words.

First run is a chance, not a gap. The user just arrived and there is genuinely nothing yet. Point at the one action that starts everything. Do not apologise.

Filtered to nothing is a different problem. There is data. The filters just hide all of it. The fix is to change the filter, so say that, and name the filter doing the damage.

Cleared is a reward. Inbox zero. All tasks done. Do not show a sad shrug here. The quiet is the point, so say so.

Three situations, three messages. One generic "nothing here" for all three is the tell that nobody thought about it.

Loading should hold the shape of what is coming

A spinner on a blank page tells the user nothing except wait. A skeleton shaped like the real layout tells them what is arriving, and stops the content jumping when it lands.

Match the skeleton to the real thing. Same rows, same rough widths. The reward is that the page never jumps, which is most of what fast feels like.

Errors should say what happened and what to do

The worst error is a red box saying "Something went wrong". It is true and it is useless. Every error worth the name answers two questions: what happened, and what can I do about it.

Three worth building on purpose:

  • Half broken. Most of the page loaded and one part did not. Show what worked, isolate what failed, and let them retry just that piece.
  • Empty because of an error. The dangerous one. A list is empty because loading failed, not because there is nothing. A cheerful "no items yet" here is a lie, and they will trust the next empty screen less.
  • Offline. Say that unsaved work is safe on the device, so nobody panics and refreshes away their draft.

Success should not oversell

Match the size of the confirmation to the size of what happened. A huge celebration for saving a setting is as wrong as silence after placing an order.

And for anything destructive, an undo bar usually beats a confirm box. It is faster for the common case and safer for the mistake, because the action stays reversible for a few seconds instead of hiding behind a prompt nobody reads.

Why it pays

These screens are where support tickets come from, where trust is won or lost, and where a product stops feeling like a prototype. They are also the first thing cut when a deadline bites, which is exactly why building them once and reusing them is worth so much.

Aurelius Black is twenty interface systems, kits and component packs built as one design system. Every product has a live demo you can click before you pay.