design breakdowns · 7 min read
Linear vs Vercel: two approaches to minimal motion
Both are dark, minimal, fast. But their motion systems are philosophical opposites. Linear uses motion to reward attention. Vercel uses silence to signal confidence.
Both Linear and Vercel are dark, minimal, technically sophisticated products used by developers. Their color systems are similar. Their typography is restrained. On the surface, they look like they belong to the same aesthetic family.
Their motion systems are almost opposites.
This is not random variation. Each motion system was built to communicate something specific about what the product is. Understanding the difference tells you something important about how to choose your own motion language.
Linear: speed as craft
Linear's motion is fast, spring-dominant, and physically grounded. Duration range: 200ms for small interactions, up to 350ms for view transitions. Hover states at 100-150ms. The whole system tilts toward feeling immediate.
The signature easing is ease-out-expo. This curve does something distinctive: it starts at nearly full speed and decelerates sharply to a stop. The experience is of something precise arriving exactly where it should be, with no wasted movement at the beginning.
Springs appear throughout — not everywhere, but wherever the user is providing input. Drag reordering in the issue list. Card movement between columns in board view. When you move an issue, the card responds to the energy of your drag. A fast throw produces momentum. A slow nudge produces a gentle settle. The spring config is tight: high stiffness, moderate damping, almost no overshoot. The spring says "responsive" not "bouncy."
Stagger patterns are present in list rendering. When a filtered view loads, items appear in a cascade at roughly 20ms per item. At a 50-item list, the last item appears 1000ms after the first, which would feel slow in isolation. At the rendered speed, it reads as the list building itself — information arriving in order rather than appearing all at once.
What this communicates: Linear treats every interaction as a confirmation of precision. The fast snap of a hover state, the spring responding to your drag velocity, the staggered list assembling itself — all of it says: you are using a tool that pays attention to what you do. The motion rewards fast, expert users. It never makes them wait.
Linear's users are engineers and product managers who use the product for hours every day. Motion that feels immediate is not just aesthetically correct — it reduces the sense of latency that accumulates over thousands of interactions.
Vercel: restraint as confidence
Vercel's motion is faster in duration than you might expect — 150-250ms — but the restraint shows in the easing and the absence of springs. Most transitions use ease-out. Status changes use linear for progress indicators. Springs appear almost nowhere.
The duration floor is 150ms. Below that, transitions feel like flickers. Above 250ms, they start to feel like loading. Vercel lands just above the perception threshold for "something happened" without entering the territory of "I am watching something."
Enter and exit animations exist but are minimal. A dropdown opens with a short fade-up. A notification slides in from the edge. These are functional signals — they tell you where something came from — not performances. The motion is quiet.
Silence is the system. A deployment completing does not produce a satisfying animation sequence. A build passing updates the status indicator with a state change. No flourish. The information is the signal.
What this communicates: Vercel builds infrastructure. The product category is fundamentally about reliability: will my deployment succeed, will my site stay up, will my build pipeline run correctly. Motion in infrastructure tools exists on a knife edge. Too little and the product feels unresponsive. Too much and it feels unreliable — like it is performing competence rather than having it.
Vercel lands exactly at "sufficient." The restraint communicates that nothing about the product needs to be sold. The deployment worked. You can see that it worked. We do not need to celebrate it for you.
Duration philosophy: the same number, different meanings
Here is an interesting wrinkle: Linear and Vercel's fastest interactions are close in duration. Both hover states land around 100-150ms. Both small UI changes resolve under 200ms.
The difference is not in the minimum. It is in the maximum and the easing.
Linear's maximum goes to 350ms for view transitions, and those transitions use ease-out-expo — they start fast and spend most of their duration decelerating. The animation is front-loaded. You get the payload of the motion immediately, then it settles.
Vercel caps most transitions at 250ms, and uses ease-out — a gentler curve that starts moderately fast. The motion is more even. Nothing accelerates dramatically or decelerates sharply. Everything moves at a considered, even pace.
Same general speed range. Completely different character.
Springs vs easing: a philosophy question
The choice between springs and easing is not primarily technical. Both can produce similar-looking results. The choice is about what the motion system is meant to express.
Springs are physically grounded. They model real-world behavior: inertia, bounce, oscillation. Even a critically-damped spring (no bounce) carries the physical feeling of mass coming to rest. Springs are responsive to input velocity, which makes them feel alive and connected to what the user is doing.
Easing curves are designed. They represent a deliberate choice about how something should move. They are not modeling anything physical. A custom cubic-bezier is a pure aesthetic decision.
Linear uses springs for interactive elements because the physical groundedness matches the product's character: precise, responsive, connected to the user's intent. Easing for transitions because transitions are between states, not responses to gestures.
Vercel uses easing almost exclusively because the product is not about responsiveness to gesture. You click deploy. A process runs. You see results. The motion is not responding to you — it is informing you. Easing is the right tool for information delivery.
Stagger patterns
Linear staggers list items at 20ms per item. At this density, the cascade reads as responsive and ordered.
Vercel staggers sparingly and only for marketing pages, not product UI. Inside the dashboard, multiple elements appearing together appear simultaneously or nearly so. The reasoning: stagger implies a relationship between items arriving in sequence. In Vercel's dashboard, items appearing together are usually parallel data — they have no inherent order. Staggering them would impose a false hierarchy.
What your motion system should say
If your product is a professional tool where experts do repeated work, Linear's approach fits: fast, spring-responsive, motion that rewards competence and never imposes on it.
If your product is infrastructure, data, or anything where the user needs to trust the system rather than interact dynamically with it, Vercel's approach fits: restrained, even, motion that confirms without performing.
The misfire is motion that does not match the product promise. A fintech product with bouncy springs creates anxiety — physical bounce is unexpected, unexpected is unpredictable, unpredictable is untrustworthy with money. A collaborative creative tool with Vercel-level restraint feels cold, even mechanical, in a context where warmth and energy are expected.
Motion is not decoration. It is part of the product's argument for why it deserves to be trusted.