Vibary.ai
← Vibe Coding

Profile Completion Ring

The ring around the avatar advances one arc per field, and each row marks itself as the arc reaches it.

onboardingminimalpremiumautomatic · 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.

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

/**
 * Vibary · Profile Completion Ring
 *
 * A ring around the avatar advances one arc per field as the profile
 * fills in, each row marking itself as the arc reaches it. On the last

About this pattern

A completeness indicator that shows its working. The arc around the avatar extends by one quarter as each field lands, and the matching row in the list draws its own mark at the same moment, so the ring and the reasons for it are never out of step. The arc springs but never overshoots — an indicator that rocks past its value and back is lying about the number printed underneath it — and that number is plain tabular text that swaps rather than counts, because scaling digits beside a moving arc splits the eye in two. Finishing changes the ring's colour and the label, and that is the whole reward; there is nothing else to celebrate about a filled-in form.

Profile completenessOnboarding flowAccount setup meterSettings nudge

Where it shows up

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

  • 10:15
    Priya RamanTrail running · Gothenburg
    214Posts1,842Followers306Following
    Follow
    Priya Raman2hFinally got the trail loop under an hour. Four months of Tuesdays.
    12814
    Profile page

    A ring beside the avatar reports how much of the profile is filled in.

Related patterns