Vibary.ai
← Vibe Coding

Magic Link Wait

A soft halo breathes behind the envelope while the emailed link is outstanding and the resend timer counts down.

authenticationcalmelegantautomatic · looping · starter · ~2.6s
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.

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

/**
 * Vibary · Magic Link Wait
 *
 * A soft halo breathes behind the envelope for as long as the emailed
 * link is outstanding, while the resend timer counts itself down.

About this pattern

Passwordless sign-in leaves someone on a page with nothing to do, which is exactly the situation an idle screen has to handle gracefully. Two halos share one slow easeInOut breath, the outer softer and a beat behind, so the glow has depth rather than reading as a disc that keeps expanding — and the cycle never ticks or jumps, because a marker that pretends to advance invents progress the product does not have. The resend timer carries the only real information on the page, so it is set in tabular figures and simply changes value; when it reaches zero the button recolors in place instead of moving. Reduced motion keeps the halo and stops the breath.

Emailed sign-in link pendingPasswordless onboarding stepDevice approval pendingResend cooldown after a request

Where it shows up

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

  • 10:15
    Check your emailWe sent a sign-in link to [email protected]
    Resend link
    Sign-in screen

    Quiet waiting state for a link that will do the signing in.

Related patterns