Vibary.ai
← Vibe Coding

Error Recovery

A failed panel settles without alarm, and the retry glyph turns exactly once per attempt.

empty-statescalmfriendlyautomatic · finite · intermediate · ~2.4s
Variant

The animated component in this preview is rendered from the canonical file shown here. The surrounding demo shell only provides context and is not part of the copied code.

379 lines · react + motion only
import { useEffect, useState } from "react";
import { motion, useReducedMotion } from "motion/react";

/**
 * Vibary · Error Recovery
 *
 * A failed section that stays useful. The block settles in without
 * alarm, and the only thing that moves on retry is the glyph inside the

About this pattern

A section that failed to load is still part of a working page, so the state arrives calmly: the mark settles once, the plain-words explanation follows, and the action sits under it with the reference number a support conversation will need. Retrying spends motion in one place — a single full turn of the glyph, tweened rather than sprung so it cannot overshoot — while the label crossfades inside a slot sized for both readings, keeping the button the same width mid-attempt. Recovered data replaces the block in the same grid cell, so nothing on the page jumps at the moment it works.

Failed data panelTimed-out requestSection that needs a reloadDashboard widget error

Where it shows up

Screens we drew to show where this motion usually sits. Illustrations, not captures of any product.

  • OverviewLast 30 days
    Revenue$48,210+12.4%
    Orders1,284+3.1%
    Refunds$1,940−0.8%
    Revenue by day
    Dashboard

    A metrics card that fails keeps its frame and offers a reload inside the same panel.

Related patterns