CrazyGLCrazyGLHomeExploreGitHubBrowse heroesLoading hero…← Back to gallery@crazygl/app-screenshot-fan-stack

App Screenshot Fan Stack

Your product screenshots pop up from below and arrange in a soft fan — every few seconds the lead card drifts away and the next slides forward in a smooth, looping reveal.

ReactWebGL3DImageInteractiveFont#three#3d#screenshot#fan#stack#apps#templates#mobile#cards#loop

Usage

import HeroAppScreenshotFanStack from '@crazygl/hero-app-screenshot-fan-stack';

export default function Page() {
  return (
    <HeroAppScreenshotFanStack
      heading={'Every screen,\non rotation.'}
      screenshot1="/shots/dashboard.avif"
      screenshot2="/shots/mobile.avif"
      cardCount={6}
      fanAmount={0.74}
    />
  );
}

Customise

  • Screenshotsscreenshot1screenshot7; each card derives its aspect ratio from the loaded image, so portraits and dashboards mix naturally.
  • CardscardCount (3–7), fanAmount (tight stack → wide arc), cardScale, cardCornerRadius.
  • LoopcycleInterval (seconds between throws), transitionDuration (ease time of each throw).
  • MotionpointerParallax (cursor tilt), ambientFloat (idle bob).
  • LightingkeyColor (warm), fillColor (cool), screenBrightness (emissive boost), shadowStrength.
  • BackgroundbgTop / bgBottom pastel radial gradient, or transparentBackground.
  • LayoutcontentAlign, padding, groupOffsetX/Y to position the fan.

Best for

  • SaaS and dashboard products showing off many screens at once.
  • Template galleries and design-tool marketing pages.
  • Mobile-app landings where "look at all our screens" is the headline.
01 · Install the package

One command, zero config.

npm install @crazygl/hero-app-screenshot-fan-stack
02 · Render the component

Import once, drop it in.

The component takes the same props you see in the live customizer on the right — every default ships poster-quality.

hero.tsx
import AppScreenshotFanStack from '@crazygl/hero-app-screenshot-fan-stack';

export default function Landing() {
  return (
    <AppScreenshotFanStack />
  );
}
03 · Use it in a page

SSR-safe by default.

The wrapper renders static HTML on the server and only initialises the canvas after hydration, so search engines see your copy.

page.tsx
// app/page.tsx — works in SSR-first frameworks (Next, Remix, Astro, etc.)
'use client';

import AppScreenshotFanStack from '@crazygl/hero-app-screenshot-fan-stack';

export default function Page() {
  return (
    <section>
      <AppScreenshotFanStack
        heading="Say hi."
        subheading="Your new hero."
      />
      <article>
        <h2>Welcome</h2>
        <p>Your content keeps its own voice below the hero.</p>
      </article>
    </section>
  );
}
You might also like

Similar heroes

Screenshot as a 3D Card Stack

Your main product screenshot sits on top of a stack of secondary UI cards. The front card swoops up and over to the back at a configurable interval, autonomously cycling through every screen. Soft drop shadows, a cyan edge glow on the top card, cursor parallax tilt.

Draggable Portfolio Cards

Portfolio cards float behind the headline and can be dragged with momentum, making the hero feel tactile and playful.

Cinematic Contact Sheet

Multiple frames behave like a cinematic contact sheet, bending through depth and holding a warm editorial mood.

Neon Glass Phone Stack

Several mobile screenshots float inside transparent neon phone frames, fanned out in a translucent stack. Outlines pulse left-to-right in a swipe-like wave and the whole stack bends gently with the cursor.

Vertical Phone Screenshot With 3D Depth

A mobile screenshot floats inside a realistic 3D phone mockup. The phone rotates with the cursor and the screen pulses with subtle app glow. Perfect for app launch pages.

Calm Cloud Interface

A SaaS dashboard floats among soft cloud sprites under a friendly cream-to-sky-blue sky. Pointer drift parallaxes both the camera and the layered clouds for a light, approachable, effortless mood.
Live customizer

App Screenshot Fan Stack

Screenshot 1 (first lead)The first card to take the lead position when the loop starts.Screenshot 2Screenshot 3Screenshot 4Screenshot 5Screenshot 6Screenshot 7Card count6How many cards live in the fan stack at once.Fan amount0.74How wide the fan opens. 0 = tightly stacked, 1 = wide arc.Card scale1.4Overall size of the cards in world units.Corner radius0.07Cycle interval1.5sSeconds between automatic lead-card transitions.Transition duration0.95sHow long each card takes to ease from one fan slot to the next.Pointer parallax0.4Strength of subtle pointer-driven tilt on the whole composition.Ambient float0.3Gentle continuous bob so the cards never read as static.Key (warm)Fill (cool)Screen brightness0.42Emissive boost on each card's screenshot. 0 = unlit.Ground shadow0.55Background topBackground bottomTransparent backgroundDrop the pastel backdrop so the hero composes onto your page background.Heading fontInteractivityWhich input drives the hero — try Scroll if you want the page to drive motion.
CrazyGL · crazygl.comProgrammable hero sections for real websites.