# React Three Fiber — Declarative 3D Graphics for React > A React renderer for Three.js that lets you build interactive 3D scenes using familiar JSX component patterns. ## Install Save in your project root: # React Three Fiber — Declarative 3D Graphics for React ## Quick Use ```bash npm install three @react-three/fiber @react-three/drei ``` ```jsx import { Canvas } from '@react-three/fiber' export default function App() { return } ``` ## Introduction React Three Fiber (R3F) is a React renderer for Three.js that turns the imperative WebGL API into a declarative component tree. It enables React developers to build 3D scenes, games, and data visualizations using the same patterns they already know. ## What React Three Fiber Does - Renders Three.js scenes as React component trees with JSX - Manages the render loop, resizing, and disposal automatically - Supports React features like Suspense, refs, and hooks in 3D - Integrates with the Drei helper library for cameras, controls, and loaders - Works with React Spring and other animation libraries out of the box ## Architecture Overview R3F implements a custom React reconciler that maps JSX elements to Three.js objects. When you write ``, the reconciler creates a `THREE.Mesh` instance and attaches it to the scene graph. State updates trigger efficient re-renders without recreating the WebGL context, keeping performance close to hand-written Three.js code. ## Self-Hosting & Configuration - Install via npm alongside the three.js peer dependency - Drop a `` component anywhere in your React app - Configure pixel ratio, camera, and renderer via Canvas props - Add post-processing with @react-three/postprocessing - Use @react-three/drei for pre-built helpers like OrbitControls and Text ## Key Features - Zero-overhead abstraction over Three.js with full API access - Automatic memory management and object disposal - First-class TypeScript support with typed scene graph - Ecosystem of companion packages (Drei, Postprocessing, XR, Rapier) - Runs in the browser, React Native, and server-side rendering contexts ## Comparison with Similar Tools - **Plain Three.js** — lower-level, imperative API without React lifecycle integration - **Babylon.js** — full engine with its own scene graph, not React-native - **A-Frame** — HTML-first approach to WebXR, less React-oriented - **PlayCanvas** — visual editor plus engine, focused on game production - **Threlte** — similar concept but built for Svelte instead of React ## FAQ **Q: Does R3F add overhead compared to raw Three.js?** A: The reconciler adds minimal overhead. Benchmarks show performance within a few percent of hand-written Three.js for most scenes. **Q: Can I use existing Three.js code inside R3F?** A: Yes. You can imperatively attach any Three.js object using refs or the `primitive` element to wrap existing instances. **Q: Does it support VR and AR?** A: Yes, via the @react-three/xr package which provides VR/AR session management and controller components. **Q: Is it production-ready?** A: R3F is used in production by companies for product configurators, data dashboards, and interactive marketing sites. ## Sources - https://github.com/pmndrs/react-three-fiber - https://r3f.docs.pmnd.rs/getting-started/introduction --- Source: https://tokrepo.com/en/workflows/asset-24f1b9ec Author: AI Open Source