A collection of ready-made React helper components and hooks for building 3D scenes with react-three-fiber.
pmndrs/react-postprocessing
A React wrapper for the postprocessing library that lets react-three-fiber scenes apply post-processing effects declaratively as JSX components.
- Stars
- 1,438
- Forks
- 141
- Open issues
- 12
- Last commit
- 11 hours ago
What is it?
react-postprocessing is a wrapper that connects the postprocessing library to @react-three/fiber, the React renderer for Three.js. Instead of building effect passes by hand, you place effect components such as Bloom, DepthOfField, Noise and Vignette inside an EffectComposer element in your Canvas.
The wrapper is aimed at straightforward effect chains rather than complex orchestration of multiple passes. The underlying postprocessing library merges the given effects into a single pass to reduce render operations, and each effect can choose its own blend function. Gamma correction is supported out of the box, and WebGL2 MSAA is enabled by default.
The package is published on npm as @react-three/postprocessing and is documented on its own docs site.
Key features
- 01Declarative effect components such as Bloom, DepthOfField, Noise and Vignette inside EffectComposer
- 02Merges effects into a single pass to reduce render operations
- 03Each effect can define its own blend function
- 04Built-in gamma correction and WebGL2 MSAA by default
- 05Written in TypeScript for use with react-three-fiber
Use cases
- Adding bloom, vignette or film grain to a react-three-fiber scene
- Applying depth-of-field blur to focus attention on part of a 3D scene
- Building a simple, linear chain of visual effects without writing render passes by hand
Quick start
- 1
Install the package
npm install @react-three/postprocessing - 2
Wrap your scene in an EffectComposer with effect components inside a react-three-fiber Canvas
Things to know
- Not meant for complex orchestration of effects; best for straightforward effect chains.
- Requires @react-three/fiber, so it only fits react-three-fiber scenes.
Topics
FAQ
- What is react-postprocessing?
- A React wrapper for the postprocessing library that lets react-three-fiber scenes apply post-processing effects declaratively as JSX components. react-postprocessing is a wrapper that connects the postprocessing library to @react-three/fiber, the React renderer for Three.js. Instead of building effect passes by hand, you place effect components such as Bloom, DepthOfField, Noise and Vignette inside an EffectComposer element in your Canvas.
- Is react-postprocessing free to use? What license does it have?
- react-postprocessing is open source under the MIT license. Check the license terms before using it in commercial products.
- Is react-postprocessing still maintained?
- Actively maintained. The last commit to react-postprocessing was on Oct 19, 2026.
- What can I use react-postprocessing for?
- Adding bloom, vignette or film grain to a react-three-fiber scene Applying depth-of-field blur to focus attention on part of a 3D scene Building a simple, linear chain of visual effects without writing render passes by hand
- How do I install react-postprocessing?
- Install the package: npm install @react-three/postprocessing Wrap your scene in an EffectComposer with effect components inside a react-three-fiber Canvas
- Where can I get react-postprocessing?
- The source code and installation instructions are on GitHub: https://github.com/pmndrs/react-postprocessing
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
An Agent Skill that lets Codex, Claude Code or Cursor generate an orbitable Three.js architecture scene that assembles itself brick by brick.
An open-source, login-free catalog of interactive Three.js/WebGL UI components with live renderers and full React source.
React bindings for the Rapier WASM physics engine, integrating rigid bodies, colliders and joints into react-three-fiber scenes.
A browser-based 3D boat journey down a Japanese river valley, rendered live with three.js across four seasons and any hour of the day.
Rebuilds an object from one reference image as procedural, animation-ready Three.js TypeScript code, not a mesh file.