Retour au classement

ruucm/shadergradient

TypeScriptshadergradient.co

Create beautiful moving gradients on Framer, Figma and React

figma-pluginframerglsl-shadersgradientreactjsthreejs
Croissance des étoiles
Étoiles
1.9k
Forks
106
Croissance hebdomadaire
Issues
16
5001k1.5k
nov. 2022janv. 2024avr. 2025juil. 2026
Artefactsnpmnpm install shadergradient
README

Shader Gradient v2

Customizable 3D, moving gradient for React. The v2 package is lean: it only ships the ShaderGradient renderer (and its canvas helper), while the stateless UI pieces now live in the separate @shadergradient/ui package.

Intro

Table of contents

Installation

Figma

Figma Plugin

Framer

Framer Component (Copy this URL and paste it on Framer Canvas)

React

Install the core renderer and its peer deps.

# with yarn
yarn add @shadergradient/react @react-three/fiber three three-stdlib camera-controls
yarn add -D @types/three

# with npm
npm i @shadergradient/react @react-three/fiber three three-stdlib camera-controls
npm i -D @types/three

# with pnpm
pnpm add @shadergradient/react @react-three/fiber three three-stdlib camera-controls
pnpm add -D @types/three

Need the stateless control surfaces? Pull them from the @shadergradient/ui package (ESM build used by Framer/Figma), not from @shadergradient/react.

Compatibility matrix

@shadergradient/react itself works on React 18 or 19, but the right @react-three/fiber version depends on your environment. For Next.js 15 App Router specifically, you must use R3F v9 + React 19 — R3F v8 is structurally incompatible with the App Router's vendored React 19 canary (see #138 for the full trace).

Environment React @react-three/fiber three
Next 15 — App Router ^19.0.0 ^9.0.0 >=0.158.0
Next 14 / Next 15 Pages / Vite / etc. ^18 or ^19 matching 8.x/9.x >=0.158.0

No next.config aliases or transpilePackages entries are required when you stay on these combinations.

Packages

  • @shadergradient/react
    • Ships only the renderer: ShaderGradient and ShaderGradientCanvas.
    • No built-in store or controls. Use your own state or pair with @shadergradient/ui.
  • @shadergradient/ui
    • Stateless UI/control components extracted from the core package for Framer/Figma usage.
    • Not published to npm; consumed as an ESM bundle (see packages/ui).
  • shadergradient-old
    • Legacy v1 package that bundled store + UI. Keep using this only if you rely on the old with-store build.

Usage

Drop ShaderGradient inside ShaderGradientCanvas and drive it with props or a query string.

import { ShaderGradientCanvas, ShaderGradient } from '@shadergradient/react'

function App() {
  return (
    <ShaderGradientCanvas
      style={{ position: 'absolute', inset: 0 }}
      pixelDensity={1.5}
      fov={45}
    >
      <ShaderGradient cDistance={32} cPolarAngle={125} />
    </ShaderGradientCanvas>
  )
}

Load settings from a URL (for example, one copied from shadergradient.co/customize):

<ShaderGradientCanvas>
  <ShaderGradient
    control='query'
    urlString='https://www.shadergradient.co/customize?animate=on&cDistance=3.6&cPolarAngle=90&color1=%2352ff89&color2=%23dbba95&color3=%23d0bce1&lightType=3d&shader=defaults&type=plane&uFrequency=5.5&uSpeed=0.4&uStrength=4'
  />
</ShaderGradientCanvas>

Available Gradient Properties (Types)

type MeshT = {
  type?: 'plane' | 'sphere' | 'waterPlane'
  animate?: 'on' | 'off'
  uTime?: number
  uSpeed?: number
  uStrength?: number
  uDensity?: number
  uFrequency?: number
  uAmplitude?: number
  range?: 'enabled' | 'disabled' | string
  rangeStart?: number
  rangeEnd?: number
  loop?: 'on' | 'off'
  loopDuration?: number
  positionX?: number
  positionY?: number
  positionZ?: number
  rotationX?: number
  rotationY?: number
  rotationZ?: number
  color1?: string
  color2?: string
  color3?: string
  reflection?: number
  wireframe?: boolean
  shader?: string
  rotSpringOption?: any
  posSpringOption?: any
}

type GradientT = MeshT & {
  control?: 'query' | 'props'
  isFigmaPlugin?: boolean
  smoothTime?: number
  cAzimuthAngle?: number
  cPolarAngle?: number
  cDistance?: number
  cameraZoom?: number
  lightType?: '3d' | 'env'
  brightness?: number
  envPreset?: 'city' | 'dawn' | 'lobby'
  grain?: 'on' | 'off'
  grainBlending?: number
  zoomOut?: boolean
  toggleAxis?: boolean
  hoverState?: string
  enableTransition?: boolean
  enableCameraUpdate?: boolean
  urlString?: string
  onCameraUpdate?: (updates: Partial<GradientT>) => void
}

ShaderGradientCanvas also accepts pixelDensity, fov, envBasePath, GL overrides (preserveDrawingBuffer, powerPreference), and lazy-load controls (lazyLoad, threshold, rootMargin).

Examples

Figma and Framer demos still use the UI package internally:

Conference Talks

FEConf 2024 ShaderGradient

Contributing

Setup

pnpm install

Start development

pnpm dev

Release

pnpm changeset
pnpm version-packages

then commit changes (message like v1.x.x)

# Release to npm
pnpm release

# Release it as ES Module (Hosted by GitHub Pages)
git push origin main

Future Plan

  • Detatch framer-motion peer depenency (Seperate UI & Store Package)
  • Figma GIF Support
  • More Shaders (Metalic, Glass, etc.)
  • Three.js version upgrade
  • Separate framer component bundles & shader gradient bundles
  • Separate shader codes as a separate package, and make it reusable for JS, Vue, etc.
  • Framer Plugin
  • Webflow Support
  • Wix Support

License

MIT © ruucm, stone-skipper

Dépôts similaires
DouyinFE/semi-design

🚀A modern, comprehensive, flexible design system and React UI library, AI-friendly built-in.🎨Provide 3000+ Design Tokens, easy to build your design system. Make Semi Design to Any Design.🧑🏻‍💻 Design to Code in one click

TypeScriptnpmOtherreactui-libary
semi.design
10.2k822
Shopify/polaris-react

Shopify's Polaris Design System - React implementation (Deprecated)

TypeScriptnpmOthershopify-polarisreact
polaris.shopify.com
6.2k1.3k
Shopify/polaris

Shopify’s design system to help us work together to build a great experience for all of our merchants.

TypeScriptnpmOthershopify-polarisreact
polaris.shopify.com
5.9k1.2k
BuilderIO/figma-html

Convert any website to editable Figma designs

TypeScriptnpmMIT Licensehtmlfigma
figma.com/community/plugin/747985167520967365
3.7k363
itmeo/webgradients

180 linear gradients in CSS3, Figma, Sketch and PSD formats — free for personal and commercial use

CSSnpmMIT Licensegradientbackground
webgradients.com
2.5k141
figma/plugin-samples

🔌 Sample Figma plugins.

TypeScriptnpmMIT Licensefigmafigma-plugin
figma.com/plugin-docs
1.8k351
lukasoppermann/design-tokens

🎨 Figma plugin to export design tokens to json in an amazon style dictionary compatible format.

TypeScriptnpmMIT Licensefigmafigma-plugin
figma.com/community/plugin/888356646278934516/Design-Tokens
1.1k148
yuanqing/create-figma-plugin

:battery: The comprehensive toolkit for developing plugins and widgets for Figma

TypeScriptnpmMIT Licensecreate-figma-pluginfigma
yuanqing.github.io/create-figma-plugin/
1.1k102