r3f-best-practices
React Three Fiber (R3F) and Poimandres ecosystem best practices.
Skill by three-agent-skills
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/zebbern-r3f-best-practices
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/r3f-best-practices
What's inside
- Skill name
r3f-best-practices- Description
- React Three Fiber (R3F) and Poimandres ecosystem best practices. Use when writing, reviewing, or optimizing R3F code. Triggers on tasks involving @react-three/fiber, @react-three/drei, zustand, @react-three/postprocessing, @react-three/rapier, or leva.
- License
- MIT
- Metadata
- author: three-agent-skills · version: 1.1.0
- Instructions
- 254 lines in SKILL.md · view on GitHub
Files (9)
- SKILL.md
- _sections.md · rules/
- drei-use-gltf.md · rules/
- frame-delta-time.md · rules/
- loading-suspense.md · rules/
- perf-never-set-state-in-useframe.md · rules/
- perf-r3f-perf.md · rules/
- perf-visibility-toggle.md · rules/
- perf-zustand-selectors.md · rules/
SKILL.md (first lines)
# React Three Fiber Best Practices
Comprehensive guide for React Three Fiber and the Poimandres ecosystem. Contains 70+ rules across 12 categories, prioritized by impact.
## Sources & Credits
> Additional tips from [100 Three.js Tips](https://www.utsubo.com/blog/threejs-best-practices-100-tips) by [Utsubo](https://www.utsubo.com)
## When to Apply
Reference these guidelines when:
- Writing new R3F components
- Optimizing R3F performance (re-renders are the #1 issue)
- Using Drei helpers correctly
- Managing state with Zustand
- Implementing post-processing or physics
## Ecosystem Coverage
- **@react-three/fiber** - React renderer for Three.js
- **@react-three/drei** - Useful helpers and abstractions
- **@react-three/postprocessing** - Post-processing effects
- **@react-three/rapier** - Physics engine
- **zustand** - State management
- **leva** - Debug GUI
## Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Performance & Re-renders | CRITICAL | `perf-` |
| 2 | useFrame & Animation | CRITICAL | `frame-` |
| 3 | Component Patterns | HIGH | `component-` |
| 4 | Canvas & Setup | HIGH | `canvas-` |
| 5 | Drei Helpers | MEDIUM-HIGH | `drei-` |
| 6 | Loading & Suspense | MEDIUM-HIGH | `loading-` |
| 7 | State Management | MEDIUM | `state-` |
| 8 | Events & Interaction | MEDIUM | `events-` |
| 9 | Post-processing | MEDIUM | `postpro-` |
| 10 | Physics (Rapier) | LOW-MEDIUM | `physics-` |
| 11 | Leva (Debug GUI) | LOW | `leva-` |
## Quick Reference
### 1. Performance & Re-renders (CRITICAL)
- `perf-never-set-state-in-useframe` - NEVER call setState in useFrame
- `perf-isolate-state` - Isolate components that need React state
- `perf-zustand-selectors` - Use Zustand selectors, not entire store
- `perf-transient-subscriptions` - Use transient subscriptions for continuous values
- `perf-memo-components` - Memoize expensive components
- `perf-keys-for-lists` - Use stable keys for dynamic lists
- `perf-avoid-inline-objects` - Avoid creating objects/arrays in JSX
- `perf-dispose-auto` - Understand R3F auto-dispose behavior
- `perf-visibility-toggle` - Toggle visibility instead of remounting
- `perf-r3f-perf` - Use r3f-perf for performance monitoring
### 2. useFrame & Animation (CRITICAL)
- `frame-priority` - Use priority for execution order
- `frame-delta-time` - Always use delta for animations
- `frame-conditional-subscription` - Disable useFrame when not needed
- `frame-destructure-state` - Destructure only what you need
- `frame-render-on-demand` - Use invalidate() for on-demand rendering
- `frame-avoid-heavy-computation` - Move heavy work outside useFrame
### 3. Component Patterns (HIGH)
- `component-jsx-elements` - Use JSX for Three.js objects
- `component-attach-prop` - Use attach for non-standard properties
- `component-primitive` - Use primitive for existing objects
- `component-extend` - Use extend() for custom classes
- `component-forwardref` - Use forwardRef for reusable components
- `component-dispose-null` - Set dispose={null} on shared resources
### 4. Canvas & Setup (HIGH)
- `canvas-size-container` - Canvas fills parent container
- `canvas-camera-default` - Configure camera via prop
- `canvas-gl-config` - Configure WebGL context
- `canvas-shadows` - Enable shadows at Canvas level
- `canvas-frameloop` - Choose appropriate frameloop mode
- `canvas-events` - Configure event handling
- `canvas-linear-flat` - Use linear/flat for correct colors
### 5. Drei Helpers (MEDIUM-HIGH)
- `drei-use-gltf` - useGLTF with preloading
- `drei-use-texture` - useTexture for texture loading
- `drei-environment` - Environment for realistic lighting
- `drei-orbit-controls` - OrbitControls from Drei
- `drei-html` - Html for DOM overlays
- `drei-text` - Text for 3D text
- `drei-instances` - Instances for optimized instancing
- `drei-use-helper` - useHelper for debug visualization
- `drei-bounds` - Bounds to fit camera
- `drei-center` - Center to center objects
- `drei-float` - Float for floating animation
### 6. Loading & Suspense (MEDIUM-HIGH)
- `loading-suspense` - Wrap async components in Suspense
- `loading-preload` - Preload assets with useGLTF.preload
- `loading-use-progress` - useProgress for loading UI
- `loading-lazy-components` - Lazy load heavy components
- `loading-error-boundary` - Handle loading errors
### 7. State Management (MEDIUM)
- `state-zustand-store` - Create focused Zustand stores
- `state-avoid-objects-in-store` - Be careful with Three.js objects
- `state-subscribeWithSelector` - Fine-grained subscriptions
- `state-persist` - Persist state when needed
- `state-separate-concerns` - Separate stores by concern
### 8. Events & Interaction (MEDIUM)
- `events-pointer-events` - Use pointer events on meshes
- `events-stop-propagation` - Prevent event bubblingFrom zebbern/claude-code-guide, MIT.
More from zebbern/claude-code-guide
- 0.746score
audit-flow
ArunJRK
Interactive system flow tracing across CODE, API, AUTH, DATA, NETWORK layers with SQLite persistence and Mermaid export.
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.740score
three-best-practices
three-agent-skills
Three.js performance optimization and best practices guidelines.
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
repo-audit
zebbern
Deep analysis of Git history: identify frequently changed hotspot files, analyze code ownership by contributor, and scan for leaked secrets.
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
http-load-profiler
zebbern
Run stepped HTTP load tests with ab/wrk, ramping concurrency levels to collect p50/p90/p99 latency, detect performance inflection points, and recommend…
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
project-sizing-guide
zebbern
Software project effort estimation assistant.
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
data-viz-renderer
zebbern
Generate self-contained HTML/SVG infographics from JSON data, including stat cards, bar charts, flow diagrams, and mixed dashboards.
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
chart-image
zebbern
Generate publication-quality PNG chart images from data, supporting line, bar, area, candlestick, pie, and heatmap charts.
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
code-vuln-audit
zebbern
Scan code for security issues: dependency vulnerabilities (npm/pip audit), secret leaks (regex and entropy analysis), and OWASP anti-patterns like SQL…
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
code-to-diagram
zebbern
Analyze codebases and automatically generate architecture diagrams, flowcharts, and org charts.
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
dataset-quality-audit
zebbern
Run comprehensive quality checks on tabular data (CSV/Excel/TSV/JSON), detecting missing values, duplicates, outliers, format issues, and type inconsistencies…
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
database-scout
zebbern
Explore SQLite and PostgreSQL databases: list tables, inspect schemas (columns/types/constraints), preview data, generate Mermaid ER diagrams, and run safe…
SkillCFreshness: C★ 4.7KClaude Code +9 - 0.662score
log-error-digest
zebbern
Analyze log files to troubleshoot errors, identify peak error periods, and produce error clustering, frequency statistics, and time distribution reports.
SkillCFreshness: C★ 4.7KClaude Code +9
Signals
- Stars
- 4,678
- Forks
- 471
- Open issues
- 3
- Last commit (this folder)
- May 31, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.1.0
- License
- MIT
- Repository
- github.com/zebbern/claude-code-guide
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from three-agent-skills
Cite this page
r3f-best-practices skill. Agent Mart. https://agentmart.dev/skills/zebbern-r3f-best-practices (last updated 2026-10-24)