Mesh Gradient
React

<MeshGradient /> (React)

Reference for the React <MeshGradient /> component props, callbacks, and usage patterns.

<MeshGradient />

The MeshGradient component creates a beautiful animated gradient using WebGL. It automatically manages the gradient lifecycle and provides a simple API for customizing appearance.

Basic Usage

import { MeshGradient } from '@mesh-gradient/react'

function App() {
  return (
    <MeshGradient 
      style={{ width: '300px', height: '200px' }} 
    />
  )
}

Props

Main Props

The component accepts all standard HTML attributes for <canvas> element, plus the following special props:

Prop

Type

HTML Attributes

You can pass any standard HTML attributes for canvas element:

<MeshGradient 
  className="rounded-lg shadow-lg"
  style={{ width: '100%', height: '300px' }}
  id="my-gradient"
/>

Configuration Options

You can follow the Gradient options section for all available options with examples.

Pause/Resume

import { useState } from 'react'

function App() {
  const [isPaused, setIsPaused] = useState(false)

  return (
    <div>
      <button onClick={() => setIsPaused(!isPaused)}>
        {isPaused ? 'Resume' : 'Pause'}
      </button>
      
      <MeshGradient 
        isPaused={isPaused}
        style={{ width: '300px', height: '200px' }}
      />
    </div>
  )
}

Callbacks

onInit

Called after gradient initialization:

<MeshGradient 
  onInit={(instance) => {
    console.log('Gradient initialized:', instance)
    // You can call instance methods
  }}
/>

onUpdate

Called when options are updated:

<MeshGradient 
  onUpdate={(instance) => {
    console.log('Gradient updated:', instance)
  }}
/>

Transitions & Animations

Smooth Appearance

<MeshGradient 
  options={{
    appearance: 'smooth',
    appearanceDuration: 500 // 500ms
  }}
/>

Smooth Transitions on Update

<MeshGradient 
  options={{
    transition: true,
    transitionDuration: 600 // 600ms
  }}
/>

CSS Variables

You can use CSS variables for colors:

:root {
  --mesh-gradient-color-1: #ff0080;
  --mesh-gradient-color-2: #0080ff;
  --mesh-gradient-color-3: #80ff00;
  --mesh-gradient-color-4: #ff8000;
}
<MeshGradient 
  options={{
    cssVariablesFallback: true
  }}
/>

Usage Examples

Responsive Gradient

<MeshGradient 
  className="w-full h-64 md:h-96 lg:h-[500px]"
  options={{
    animationSpeed: 0.8
  }}
/>

Controlled Gradient

import { useState } from 'react'

function ControlledGradient() {
  const [config, setConfig] = useState({
    animationSpeed: 1.0,
    isPaused: false
  })

  const updateSpeed = () => {
    setConfig(prev => ({
      ...prev,
      animationSpeed: 2
    }))
  }

  return (
    <div>
      <button onClick={updateSpeed}>
        Change speed
      </button>
      
      <MeshGradient 
        options={config}
        isPaused={config.isPaused}
        style={{ width: '300px', height: '200px' }}
      />
    </div>
  )
}

Performance

  • Gradient automatically pauses when outside viewport
  • Static mode supported for better performance
  • Optimized resize handling with delay
  • Automatic resource cleanup on component unmount

Limitations

  • Requires WebGL support in browser
  • Client-side only (uses 'use client')
  • Canvas size must be greater than 0x0 pixels

On this page