Vibary.ai
← Vibe Coding

Empty Subscriptions

A plan card draws itself, a renewal loop completes once above it, and two ghost rows rise in stagger to show where subscriptions will go.

empty-statescalmfriendlyautomatic · finite · starter · ~1.8s
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.

310 lines · react + motion only
import { motion, useReducedMotion } from "motion/react";

/**
 * Vibary · Empty Subscriptions
 *
 * An empty subscription list assembles its own invitation. A plan
 * card draws itself, a renewal loop completes once above it, the
 * loop's arrowhead lands on a single soft spring, then two dashed

About this pattern

A billing screen with no subscriptions should feel settled, not broken. This belongs on that screen: the subscription list with no active plans, the billing tab before the first plan starts, the account screen after every plan has lapsed. The card and the renewal loop draw themselves as pathLength tweens because an empty state should arrive rather than pop; the loop's arrowhead lands on one critically damped spring, the only settle in the file, so the loop closes without a wobble; the two dashed ghost rows rise in stagger on eased tweens, which is how the list hints at its future rows without showing them; and the copy only fades in after the marks are still, because words that move read as unfinished work. Under reduced motion the beats keep their order and lose their travel.

Subscription management screen with no active plansBilling page before the first plan startsAccount screen after every plan has lapsedTeam workspace waiting for its first subscription

Where it shows up

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

  • BillingLast 30 days
    Invoice 4821$169.65Paid
    Invoice 4809$412.00Paid
    Invoice 4794$88.20Due Jun 30
    Invoice 4780$1,204.00Paid
    Billing page

    A subscriptions tab with no plans centers the renewal mark above ghost rows, so the billing screen looks finished.

  • Ridgeline
    Billing
    Inbox
    Starred
    Drafts
    Archive
    BillingNew
    Nothing here yetWhen there is something to show, it appears here.
    Settings

    Account settings show the empty renewal state where plan management will live, marked at the empty pane.

Related patterns