Add an interactive 3D product model to a React website where users can click individual parts to highlight or inspect them.
Compress a heavy 3D character file by up to 90% before shipping it in a web app, without touching the original.
Reuse the same 3D scene object multiple times on a page without conflicts or duplicated data.
Wire up 3D model animations to React state so you can trigger walk, idle, or jump clips from your UI.
| pmndrs/gltfjsx | airbnb/hypernova | pdfcrafttool/pdfcraft | |
|---|---|---|---|
| Stars | 5,790 | 5,794 | 5,784 |
| Language | JavaScript | JavaScript | JavaScript |
| Setup difficulty | easy | hard | easy |
| Complexity | 3/5 | 4/5 | 1/5 |
| Audience | vibe coder | developer | general |
Figures from each repo's GitHub metadata at analysis time.
Run with npx, no global install needed. Requires an existing react-three-fiber project. Use --transform flag for compression.
gltfjsx is a command-line tool that takes a 3D model file in the GLTF or GLB format and converts it into a React component. GLTF is a standard file format for 3D scenes and models, and react-three-fiber is a library for displaying 3D content inside React applications. The problem gltfjsx solves is that dropping a raw GLTF file into a 3D scene is inflexible: you can only place the model once, you have to dig through its internal structure to change anything, and modifying parts of it tends to corrupt the original data. When you run gltfjsx on a model, it reads the file, maps out all the meshes, materials, lights, cameras, and animations inside it, and produces a JSX file where each part of the model is a named element. That means you can place the same model multiple times in a scene without conflicts, hide or show individual parts based on conditions, change colors or swap out materials with a single line, and attach click or hover events to specific pieces of the model. The tool also handles optimization. With the --transform flag it runs the model through a compression pipeline that typically reduces file size by 70 to 90 percent, handling draco compression for geometry, resizing textures to 1024x1024 in WebP format, and removing redundant data. It does not alter the original file, it produces a separate transformed copy. Additional options include TypeScript type generation for the model's nodes and materials, auto-instancing to reduce rendering cost when the same geometry appears multiple times, and automatic wiring of animation clips into hooks so you can trigger and blend them from your React code. The tool is run with npx and does not require a global install. It is part of the pmndrs (Poimandres) open source collective, which also maintains react-three-fiber and related libraries.
Turn any 3D model file (GLTF/GLB) into a reusable React component, with named parts, animations, and optional 70-90% file-size compression built in.
Mainly JavaScript. The stack also includes JavaScript, React, react-three-fiber.
Open source from the Poimandres collective, free to use in personal and commercial projects.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly vibe coder.
This repo across BitVibe Labs
Verify against the repo before relying on details.