Build interactive visualizations for Next.js (SVG, Canvas, Three.js, Framer Motion). Use when creating diagrams, animations, simulations, or data visualizations.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Build interactive visualizations for Next.js (SVG, Canvas, Three.js, Framer Motion). Use when creating diagrams, animations, simulations, or data visualizations.
Interactive Visualization Creator
When to Use: Building interactive visualizations for Next.js/React sites that need to both look stunning AND teach concepts effectively through interactivity.
When NOT to Use: Static charts (use a charting library), pure decoration with no pedagogical purpose, or backend data dashboards (use admin tooling).
Core Insight: The best visualizations are not fancy effects in search of a purpose. They make concepts viscerally obvious that would take paragraphs of text to explain poorly. Every animation, every interaction, every color choice must serve comprehension.
The Golden Thread
These are the invariant truths distilled from 100+ production visualizations across jeffrey_emanuel_personal_site, frankentui_website, frankensqlite_website, and asupersync_website. They are non-negotiable:
#
Principle
Why It Matters
1
Pedagogy drives design, not aesthetics
A beautiful viz that doesn't teach is just a screensaver
2
Progressive disclosure over information dump
Reveal complexity gradually via steppers, scroll triggers, phases
3
Device-aware quality tiers, not responsive compromise
Low/medium/high particle counts, different interaction models per device class
4
Dual interaction models
Desktop = hover + parallax + keyboard; Mobile = tap + haptic + bottom-sheet
5
Spring physics over linear interpolation
Springs feel natural; linear feels robotic
6
SVG for structure, Canvas/WebGL for particles
Pick technology by visualization type, not familiarity
7
Lazy initialization is mandatory
IntersectionObserver + rootMargin. Never render heavy content off-screen
8
prefers-reduced-motion is not optional
Full accessibility support in every component, always
9
Real algorithms, not fake data
Embed actual implementations (CMA-ES, Myers diff, Hoeffding's D) for correctness
10
Comparative juxtaposition
Side-by-side before/after makes differences viscerally obvious
Test on real mobile: Not just browser resize - actual touch interactions
Validate pedagogy: Does a first-time viewer actually learn the concept?
Tech Selection Guide
Need
Technology
When to Use
State transitions, layout animation
Framer Motion
Default choice for all animated React components
SVG diagrams, node graphs, trees
SVG + Framer Motion
Structured diagrams with <50 animated elements
Particle systems, 3D visualization
React Three Fiber (Three.js)
>100 particles, 3D space, WebGL shaders
Canvas 2D rendering
Raw Canvas + RAF
Custom rendering not suited to SVG DOM
Statistical calculations, scales
D3.js (math only)
Scales, color interpolation, statistics. NOT for rendering
Complex data tables with viz
TanStack Table + Virtual
Sortable/filterable data with virtualization
Timeline animations
GSAP
Complex sequenced timelines (alternative to Framer)
Charts with large datasets
ECharts
When D3+SVG would choke on data volume
Technology Anti-Patterns
Never use D3 for DOM manipulation in React (use D3 for math, React for rendering)
Never use Three.js for flat diagrams (SVG is simpler and more accessible)
Never use CSS keyframe animations for interactive state (can't respond to user input)
Never use react-spring AND Framer Motion together (pick one animation library)
Never use force-directed layout for fixed diagrams (compute positions deterministically)
Key Reusable Patterns
Stepper Controller — The single most reusable pattern (used in 30+ visualizations). Prev/Next/Play controls with keyboard support, auto-play, step dots, and haptic feedback. Full implementation in QUICK-REFERENCE.md.
Semantic Colors — Consistent across all visualizations: emerald=success, red=error, amber=warning, cyan=active, sky=info, violet=accent, slate=muted. Color is never the sole indicator — always pair with icons/labels/shapes. Full palette in GOLDEN-THREAD.md.
Spring Physics — Default transitions: { type: "spring", stiffness: 200, damping: 25 }. Snappy: stiffness: 400, damping: 35. Magnetic: stiffness: 150, damping: 15, mass: 0.1. Full configs in QUICK-REFERENCE.md.
Validation Checklist
Before considering any visualization complete:
Teaches something: A non-expert can explain the concept after interacting
Works without animation: Meaningful in static/reduced-motion mode