Back

Redefining the Wait

Overview

Every loader is a moment when users lose control. For years monday.com's answer was a spinner. Sixteen different spinners, from sixteen different teams. I led the research and design work to replace that with one system, which doesn't make anything load faster. It changes how long the wait feels.

Role

Motion Design Team Lead

Lead Motion Designer & UX Researcher

THE PROBLEM

A “Hectic” Start

An audit of the platform turned up what I called “Hectic Flow”: 16 loading indicators on a single dashboard, 6 different types, no shared logic between any of them. Every squad had solved the same problem alone. The result wasn't just inconsistent. It read as broken.

APPROACH

Ex: Dashboard “hectic” loading flow

  • 16 loading indicators
  • 6 different types
  • No consistent message

THE STRATEGY

Loading Is an Information Problem

The fix wasn't prettier spinners. Loading isn't a speed problem, it's an information problem: people tolerate a wait when they can see what's coming. Skeleton screens orient you before the content arrives, so we stopped designing the wait and started designing the preview.

We tested it on the app entrance, rebuilding a passive logo loop into a progressive build.

Ex 2: Welcome Screen to platform

Before

  • Passive waiting. Every tester perceived it as slower.
  • Logo loop, Lottie-driven DOM animation.

After

  • Active waiting. The same 8-second load was perceived as roughly 4.
  • All motion, including the logo build, authored in code.

OPERATIONALIZING

The System Library

A good concept doesn't scale on its own. To ship consistent loading across 30+ squads I built a loading design system and specs library: documentation that made the right choice the easy choice.

The One-Loader Rule. One dominant loading treatment per surface, no exceptions. That single rule is what stops Hectic Flow coming back.

Shimmer duration at 720ms, easing curves, and loader colours all became shared tokens. What used to be decided case by case was now already decided.

Realistic layouts with progressive loading and varied component treatments

Realistic Layout

Layouts should be realistic so users stay oriented and understand where they are. The loader should make the gradual reveal of the interface feel intentional, not abrupt. When similar components sit together, vary the treatment so the screen feels versatile rather than repetitive.
Minimal loading components with varied line lengths

Component Design

Keep the treatment simple so the interface stays clean and never feels overloaded with detail. Vary line lengths where it helps placeholders read as natural rather than rigid. The loader should communicate progress, not mirror the final component down to every control.
Layout spec for placeholders and motion

Layout spec

A layout spec for placeholders and animation: structure, rhythm, and timing documented so implementation stays consistent across surfaces.
Color tokens for loading and motion

Color tokens

Defined color tokens for loaders and motion so shimmer, pulse, and state changes stay on-brand and legible in every theme.
Realistic layouts with progressive loading and varied component treatments

Realistic Layout

Layouts should be realistic so users stay oriented and understand where they are. The loader should make the gradual reveal of the interface feel intentional, not abrupt. When similar components sit together, vary the treatment so the screen feels versatile rather than repetitive.
Minimal loading components with varied line lengths

Component Design

Keep the treatment simple so the interface stays clean and never feels overloaded with detail. Vary line lengths where it helps placeholders read as natural rather than rigid. The loader should communicate progress, not mirror the final component down to every control.
Layout spec for placeholders and motion

Layout spec

A layout spec for placeholders and animation: structure, rhythm, and timing documented so implementation stays consistent across surfaces.
Color tokens for loading and motion

Color tokens

Defined color tokens for loaders and motion so shimmer, pulse, and state changes stay on-brand and legible in every theme.
Realistic layouts with progressive loading and varied component treatments

Realistic Layout

Layouts should be realistic so users stay oriented and understand where they are. The loader should make the gradual reveal of the interface feel intentional, not abrupt. When similar components sit together, vary the treatment so the screen feels versatile rather than repetitive.
Minimal loading components with varied line lengths

Component Design

Keep the treatment simple so the interface stays clean and never feels overloaded with detail. Vary line lengths where it helps placeholders read as natural rather than rigid. The loader should communicate progress, not mirror the final component down to every control.
Layout spec for placeholders and motion

Layout spec

A layout spec for placeholders and animation: structure, rhythm, and timing documented so implementation stays consistent across surfaces.
Color tokens for loading and motion

Color tokens

Defined color tokens for loaders and motion so shimmer, pulse, and state changes stay on-brand and legible in every theme.
Active slide 1 of 4

EXTENDED STATES

Storytelling & Duration

The system handles most cases. Two didn't fit.

For high-value moments across AI, Docs and Canvas, a generic shimmer undersells what's happening, so we built animated loops that show what the product is actually doing. The wait becomes part of the story.

A shimmer held for twenty seconds reads as frozen. For heavy backend work like exports and duplications, we built progress-segmented loaders that show the work happening in phases, so people stay anchored instead of anxious.

Forms

Presents layouts and mediums for different forms.

Canvas

Presents how dynamic the artboard can be.

Docs

Presents types of fields you could use in Docs.

Sidekick

The user isn't just "waiting", they are "watching the AI build."

THE SEARCH-TO-EMPTY STATE

Continuity

Most loading systems stop at success. But what happens when the result is nothing? A hard cut from loader to empty state reads as failure. I designed the transition as a continuation: the loader flows directly into the empty state, keeping the momentum. The system doesn't fail, it resolves.

THE IMPACT

One System, Thirty Squads

The prototype graduated into the core design system and replaced ad-hoc loaders across the platform.

  • Adopted across 30+ squads

    The loading system became the standard pattern on every product surface, replacing ad-hoc decisions with a shared language.

  • Perception over performance

    Nothing about the platform got faster. The waiting just stopped feeling like waiting.