# pmndrs/react-three-fiber

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/pmndrs-react-three-fiber).**

30,269 stars · 1,777 forks · TypeScript · mit

## Links

- GitHub: https://github.com/pmndrs/react-three-fiber
- Homepage: https://docs.pmnd.rs/react-three-fiber
- awesome-repositories: https://awesome-repositories.com/repository/pmndrs-react-three-fiber.md

## Topics

`3d` `animation` `fiber` `react` `renderer` `threejs`

## Description

This project is a React-based WebGL renderer that enables the creation of three-dimensional scenes using a declarative, component-driven architecture. It functions as a bridge between a component-based user interface library and a low-level graphics engine, allowing developers to manage lights, cameras, and geometry as standard elements within a reactive tree structure.

The library distinguishes itself by treating the scene graph as a declarative hierarchy that synchronizes directly with application state and lifecycle events. It utilizes a custom reconciler to map component updates to object mutations, while a reflection-based system automatically binds component properties to underlying graphics objects. By integrating directly with the animation frame cycle, it ensures that visual updates remain synchronized with the render loop.

Beyond core rendering, the project provides a normalized event system that translates pointer interactions into raycasting intersections for 3D objects. It supports the development of consistent graphical content across desktop and mobile browsers through a unified programming model, while using context-based patterns to manage scene-specific instances like cameras and renderers.

## Tags

### Graphics & Multimedia

- [WebGL & GPU Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/webgl-gpu-rendering.md) — Provides a bridge between a component-driven UI library and a low-level graphics engine to manage complex 3D scenes.
- [Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering.md) — Treats three-dimensional scene elements as reusable UI components that synchronize with application state.

### Software Engineering & Architecture

- [Component-Based Scene Graphs](https://awesome-repositories.com/f/software-engineering-architecture/component-based-scene-graphs.md) — Manages hierarchical 3D object structures through reusable code blocks that synchronize with application state.
- [Declarative 3D Scene Graphs](https://awesome-repositories.com/f/software-engineering-architecture/declarative-3d-scene-graphs.md) — Maps three-dimensional objects, lights, and cameras into a standard tree structure for reactive interface development.
- [Reconciliation Engines](https://awesome-repositories.com/f/software-engineering-architecture/reconciliation-engines.md) — Uses a custom renderer to coordinate component updates and object property synchronization within the standard component lifecycle.
- [Declarative Scene Graphs](https://awesome-repositories.com/f/software-engineering-architecture/declarative-scene-graphs.md) — Maps component lifecycle events to object mutations by treating the scene graph as a declarative tree structure.

### User Interface & Experience

- [Render Loop Integrations](https://awesome-repositories.com/f/user-interface-experience/render-loop-integrations.md) — Hooks into the request animation frame cycle to synchronize component updates with the underlying WebGL render loop.
- [Declarative Property Bindings](https://awesome-repositories.com/f/user-interface-experience/declarative-property-bindings.md) — Automatically maps component props to object properties and methods using a reflection-based setter system.
