Yueser ← Back to library

AI / Design Communication & Image Prompting

From empty state to content

What should happen in the 400ms after the user taps New

Scenario: a list page is empty on first use. The user taps New, submits, and the first item is created. Design the transition from empty state to content: 1) The state sequence — empty, submitting, skeleton, partial appear, complete; 2) Duration and easing for each step, keeping the whole thing under 400ms; 3) How to prevent layout shift, including reserving height and keeping skeleton dimensions identical to real content; 4) Where focus and scroll position go; 5) Accessibility — what changes under prefers-reduced-motion, and whether aria-live is needed; 6) The three things this transition must confirm to the user. Give a timing table showing what the user sees at each step.
How to use

Do not prop up a slow endpoint with a skeleton; past one second, switch to a progress state or return to the list first.

Good for

  • On first use the list is empty and the user creates the first item — with no feedback at that moment, they assume it did not save and tap again.
  • The list page also has controls that depend on content, such as filters and bulk actions — the transition has to answer when those controls appear as well.

Not for

  • Content always arrives as a whole page from the server, an admin report for instance — there is no empty-to-content moment, and a transition only adds delay.
  • Every create navigates to a full detail page — that is a page transition, not a state transition within one screen.

Example

Input
A task app: the empty state is an illustration plus Create your first task; the user types a title and submits, and the first item has to appear; today the screen flashes white and the item just shows up
What you get
It lays out five steps: the illustration fades over 120ms; skeleton rows reuse the real 56px row height and card radius; after 120ms the first item fades in with an 8px upward move; the remaining rows stagger in at 40ms intervals; focus lands on the new item's title with scroll pinned to the top. The white flash happens because nothing holds the space during the wait, and a skeleton removes it. Under reduced motion the offset and stagger are dropped, leaving a 100ms opacity swap.

Common mistakes

  • Using a skeleton to cover a slow endpoint — the transition is 400ms; if the call takes two seconds the skeleton just sits there and the user gets more anxious.
  • Letting new content fly in from off-screen — beyond 24px of travel the user loses the spatial relationship of where it was added.

Try tweaking it like this

  • Try the reverse transition after deleting the last item — going from content to empty is easier to get wrong; an illustration that pops in reads like an error.
  • Add the failure branch: on a failed submit, keep what was typed and show the error in place — a transition design has to include the path where it does not work.

More in this topic