Skeleton Screens

Skeleton screens is an AI UX pattern that shows the shape of upcoming AI content—message bubbles, cards, charts—while generation runs. Perceived wait drops because layout appears before final tokens.

Share

Interactive demo

Compare our top three competitors on pricing and positioning.
Loading

Overview

The design problem

How might we design skeleton screens so people can trust and act on AI output?

Use this pattern

When this pattern fits

  • Ideal for AI apps with longer generation times, where a structure-matched loading state reduces perceived latency and sets expectations.

Avoid this pattern

When to skip or lighten it

  • Sub-200ms responses where skeletons flicker uselessly.
  • Unknown output shapes that would make a fake skeleton misleading.
  • Voice-only modes where visual skeletons do not apply.

States

State model coming soon

Key UX elements

Key UX elements coming soon

Anti-patterns to avoid

  • Spinners with blank layout instead of content-shaped placeholders.

  • Skeletons that do not match the final layout, causing jumpiness.

  • Leaving skeletons on screen after content failed.

  • Animating so aggressively that accessibility suffers.

How products use it

ProductImplementation
LinearContent-shaped loading placeholders in app views.
NotionBlock skeletons while AI or pages load.
Vercel / Next.js appsRoute and streaming skeletons for AI UIs.
ChatGPTStreaming placeholders as answers begin.

Implementation

Copy this prompt to generate a production-ready implementation in Cursor, Claude Code, Lovable, or any AI coding agent.

Generate a production-ready implementation of the "Skeleton Screens" AI interface design pattern.

Pattern Definition:

Frequently asked questions

When should AI UIs use skeletons vs streaming text?

Stream text when the answer is prose. Use skeletons for cards, tables, or multi-panel layouts that are not token-shaped.

Do skeletons replace progress steps?

No. Skeletons show layout; progress steps explain tool work. Use both for agent runs.

How do you avoid layout shift?

Match skeleton dimensions to the likely final component, then morph into real content.

What if generation fails?

Replace skeletons with an error state and retry—never freeze on gray bars.

Weekly AI UX in your inbox

Weekly AI interface UX notes and resources on Substack, no spam, unsubscribe anytime.

Subscribe on Substack