Progress As Content
Progress as content is the loading pattern that converts wait time into usable, readable material. The intermediate steps become the product. Users engage with live logs, reasoning traces, build outputs, streaming data, or step by step diagnostics instead of staring at a spinner. This approach acknowledges that some operations cannot be made instant. Rather than hide that fact the product makes the journey transparent and valuable. The design team spends the same effort on typography, color, motion, and information hierarchy in the loading state as they do in the final screen. Every status line carries meaning. Every update builds context. The user leaves the experience smarter or more confident even if the final result has not arrived yet. In an industry obsessed with shaving milliseconds this pattern flips the script. It says the wait is not a bug. It is a feature you forgot to design. The article on loading states positions it as one of five key archetypes because it changes the relationship between user and product during latency. The user is not waiting for the product. They are reading the product while it thinks.
This pattern is not a dressed up spinner with clever micro animations. It is not a fake progress bar that jumps from 30 percent to 90 percent for no reason. It is not generic loading text with rotating dots or a branded spinner alone. Those are what teams ship when they treat the loading state as an afterthought. Progress as content requires that the displayed information remains useful even if the final state never arrives. The content must stand alone. It must inform or delight or diagnose. If the user can ignore the loading content completely then the team built a spinner with extra HTML. The difference is night and day. One pattern breeds distrust. The other builds loyalty. It is also not the same as streaming partial. Streaming delivers the end result in chunks. Progress as content surfaces the work that produces the result.
Concrete examples prove the gap. Vercel turned their deploy screen into the most watched page on their platform. The loading state is not a modal. It is the entire interface filled with a live terminal output that streams every phase of the build process. Lines appear in real time with timestamps, command outputs, and status badges in Vercel's signature purple. Engineers watch it closely because it surfaces errors faster than any dashboard could. The pattern ships so much value that some users trigger deploys just to watch the log unfold like a movie. GitHub Actions refined this further back in 2018 and improved it steadily since. Their workflow run screen breaks down each job into discrete steps. Click any step and the full log expands with searchable text, line numbers, and direct links to failed commands. The 2023 redesign added collapsible sections and artifact previews that load during the run without refreshing the page. Cursor AI pushed the boundary in 2024 with its agent mode. The sidebar shows the model's full reasoning trace as it happens. Planning steps, file edits, test predictions all appear in plain English before any code changes. The user watches the plan form, the edits apply, and the tests run. What could have been a black box becomes a live coding session with an AI pair programmer. v0 generates Shadcn UI components by streaming the actual code and updating a preview canvas in real time. Users adjust the prompt mid stream and the loading content reacts instantly with new components popping into place. Lovable builds entire SaaS apps from prompts using the same technique. The build log sits beside a live preview that fills in section by section with smooth transitions. Each completed card or form becomes a moment of delight during the wait. Perplexity AI shows search orchestration steps including which sources it queries, how it ranks them, and how it synthesizes the answer. The user reads along as the AI works and can stop it if they see a bad path. AWS CloudFormation and Terraform Cloud both show resource by resource creation with detailed event logs that power users rely on for debugging infrastructure as code. These are not loading states. They are experiences that happen to occur during a longer computation.
Use progress as content when the wait generates data that users want to consume. Complex CI/CD pipelines, AI model inference, large data imports, video rendering queues, or any process where transparency reduces anxiety and builds trust. It works especially well for developer tools and pro user software where the audience values visibility into systems. The pattern cuts support costs because problems surface early with context attached. It increases perceived performance because engaged users feel less time pass. The five rules from the loading state article apply here too. The shape must predict the final shape. The wait must carry information. Every wait over 800ms gets feedback. Keep optimistic paths reversible. And never use a spinner without a brand reason. Avoid this pattern when the audience has no interest in the steps. A consumer checking out on an ecommerce site does not want to see database queries or fraud detection logic. Skip it for operations shorter than fifteen seconds where skeletons or optimistic updates deliver better results. Never ship it without brand alignment. The log text must match your voice. The colors must match your palette. The motion must match your cadence. Half measures here feel like a 1990s terminal duct taped onto a 2025 product. If the steps are not useful to a user who only cares about the final state then default to one of the other four archetypes.
Make your slowest screen your strongest brand moment by turning every wait into content worth reading.
Read the full guide
Related terms
Keep exploring
Loading State
The UI a product displays while fetching data, running tasks, or waiting on servers. It is the most viewed screen across all user sessions yet the one most teams design last.
Streaming Partial
Streaming partial renders the first usable chunk of server output the moment it arrives while the rest streams in behind it. Users start reading or acting on real content immediately so the loading state vanishes into active consumption.
Branded Spinner
A branded spinner is the custom micro animation that layers product personality onto structured loading states using signature gradients, pulses, and timing curves pulled from your design system.
Perceived Performance
Perceived performance is the gap between actual latency and how fast the product feels to the user. It lives in every loading state, skeleton, optimistic update, and branded transition that either builds trust or quietly erodes it.