Pet adoption · Portland, OR
Every pet profile on this page arrives the way a good host greets you: shell first, shape before detail, cards landing one by one — never a blank page, never a lie about progress.
The catalog
Filter, then hit “Replay the load” — the grid re-runs its whole arrival: shell, shimmer, staged reveal.
The loading lab
The same wait, three treatments. Shimmer wins because it moves with direction — pulse reads as stuck, a lone spinner says nothing at all.
Light sweeps left to right across the exact shape of what's coming. Direction reads as progress.
Opacity breathing. Acceptable for reduced motion and low-power mode — never the first choice.
For buttons and tiny inline waits only. A full page of spinner is a page with nothing to say.
Press run — each step completes for real before the bar moves. No timer-driven fake percentages.
Good to know
A spinner says "something is happening". A skeleton shows the shape of what's coming, so your eye already knows where to look when it lands. It feels faster even when the wait is identical.
The shimmer stops and you get a plain explanation plus one retry button, right where the content should have been. A loading state with no ending is the one unforgivable state.
Yes. With prefers-reduced-motion, shimmer becomes a static tint, staggered cards appear instantly, and the ticker stops. Nothing essential ever depends on motion.
Ready when you are
Four honest steps, no fake progress bars, and a match card that arrives the way everything here does — in order.
Start an application →