Vibary.ai
← Vibe Coding

Lazy Section Reveal

A below-the-fold section fades and lifts the first time it comes into view, and never again after that.

loadingelegantcalmautomatic · finite · starter · ~0.7s
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.

223 lines · react + motion only
import { useRef } from "react";
import type { ReactNode, RefObject } from "react";
import { motion, useInView, useReducedMotion } from "motion/react";
import type { Variants } from "motion/react";

/**
 * Vibary · Lazy Section Reveal
 *

About this pattern

The reveal that long pages are built out of, with the discipline that usually gets left off. An observer watches the section and fires once about a third of it is on screen; its children then arrive a few tens of milliseconds apart, fading and lifting a short distance on an over-damped spring. The important half is the restraint: the observer is armed only once, so scrolling back up leaves the section exactly as the reader left it. Replaying on every pass turns a page into a slideshow and re-hides paragraphs that have already been read, which is worse than no reveal at all. Everything here is type, so it travels a little and never scales.

Marketing page sectionLong articleBelow-the-fold cardsDeferred content block

Where it shows up

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

  • Ridgeline
    Docs
    Recent
    Shared
    Templates
    Trash
    DocsNew
    Q3 planning notesEdited 14 minutes agoScope
    Document page

    Feature blocks lift and fade in once as the page is scrolled past them.

Related patterns