CrazyGLCrazyGLHomeExploreGitHubBrowse heroesLoading hero…← Back to gallery@crazygl/ice-surface

Ice Surface

A glassy frozen pane fills the frame. Tap or drag to spread fresh cracks; old fractures slowly heal.

ReactWebGLInteractiveFont#ice#cracks#frost#interactive#premium

Usage

import IceSurface from '@crazygl/hero-ice-surface';

export default function Page() {
  return (
    <IceSurface
      iceColor="#cfe6f7"
      crackScale={12}
      healSpeed={1}
    />
  );
}

Customise

  • IceiceColor, deepColor, crackColor, frostDensity, crackScale (number of crystal grains across the frame), healSpeed, spread (how far each strike fractures).
  • Content — heading / subheading / two-columns / custom over the ice, plus headingFontFamily.
  • Interaction — pointerdown anywhere fractures the pane; a seed cluster fires on mount so the hero never starts blank.

Best for

  • Winter and seasonal campaign pages.
  • Cold-chain, refrigeration, and frozen-food brands.
  • Premium beverage / spirits launches and luxury reveals that want a tactile, touch-it-to-believe-it opening.
01 · Install the package

One command, zero config.

npm install @crazygl/hero-ice-surface
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 IceSurface from '@crazygl/hero-ice-surface';

export default function Landing() {
  return (
    <IceSurface />
  );
}
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 IceSurface from '@crazygl/hero-ice-surface';

export default function Page() {
  return (
    <section>
      <IceSurface
        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

Ice Encased Logo

Your logo is frozen inside a chunky beveled cube of real refractive ice. Three.js MeshPhysicalMaterial with IOR 1.31, clearcoat, Beer-Lambert blue attenuation and chromatic dispersion bends the studio HDRI around the brand. Frost on the front face melts on load to reveal the logo inside a clear ice-cube body.

Frosted Typography

Crystalline frost grows across the headline like ice forming on glass; the cursor acts as warmth, melting frost where it passes.

Water Surface

A dark reflective water plane. Stacked Gerstner waves animate the surface and the cursor leaves a continuous wake of expanding Gaussian wavefronts plus a live finger-press depression directly under the pointer. Sky, sun, and horizon refract through every displaced normal.

Fireflies

Glowing fireflies drift over a stylised mountain horizon. The cursor attracts the swarm and makes them flare bright.

Gravitational Particles

Hundreds of particles orbit invisible gravity wells. The cursor adds a temporary attractor that bends nearby paths into fresh orbits.

Bubble Universe

Iridescent soap bubbles drift upward, each refracting the bg and showing a thin-film rainbow rim. The cursor wobbles nearby bubbles.
Live customizer

Ice Surface

Ice colourDeep tintCrack colourFrost density1Crack scale12Number of crystal grains across the frame.Heal speed1Crack spread0.18Heading FontInteractivityWhich input drives the hero — try Scroll if you want the page to drive motion.
CrazyGL · crazygl.comProgrammable hero sections for real websites.