Skip to Content
AI Agent Guide

Build with React Immersive

This guide targets @liveroom-tech/react-immersive 5.2.0. Use React and React DOM 19, Three.js 0.184, and React Three Fiber 9.6.1 or a compatible 9.x release.

Read only what the task needs

Every documentation page has a .md alternative. The manifest also lists small Markdown sections of the ModelViewer reference so you can fetch one topic without loading the entire API reference. HTML is the default response; Accept: text/markdown requests the Markdown alternative at the same docs URL.

Choose a component

GoalImportStylesheetRuntime key prop
Display a model, inspect meshes, toggle visibilitySimpleModelViewer from @liveroom-tech/react-immersive/simple-model-viewer@liveroom-tech/react-immersive/simple-model-viewer.cssNone
Configure materials, actions, annotations, camera or app stateModelViewer from @liveroom-tech/react-immersive@liveroom-tech/react-immersive/styles.cssRequired
Author bindings and scene settings visuallyBindingBuilder from @liveroom-tech/react-immersive/binding-builder@liveroom-tech/react-immersive/binding-builder.cssRequired

The package is proprietary. SimpleModelViewer needs no key or paid plan, including in production. For ModelViewer and BindingBuilder, follow the licensing guide  before deployment. Account sign-in, plan selection and key creation are manual steps in the console .

Get a first render

Use the complete Vite setup  or Next.js App Router setup . Both start with SimpleModelViewer and an explicitly sized container. The public sample is red_room.glb ; place it at public/red_room.glb in the consuming application.

Success means the model is visible, the scene objects panel lists objects, and onModelLoaded fires. A successful TypeScript build alone does not verify that a model URL works in the browser.

Add interaction

Start with ModelViewer without objectBindings to generate bindings for all meshes. Use useViewer and spread viewer.props onto the component to connect its controllers. Use onObjectCatalog to discover actual object identifiers; do not invent node names. Duplicate authored names receive suffixed IDs.

When using defineObjectBindings, preserve literal IDs for authoring but widen mutable React state to Record<string, ObjectBinding>. Bindings are indexed by model node identifiers; binding.id is application metadata and can differ.

TaskRead
Wire app state and controllersuseViewer 
Materials, visibility, grouped editsuseObjectBindings 
Camera focus and saved viewsuseViewerCamera 
Lighting, environment and scene configurationuseSceneConfig 
AnimationsuseViewerAnimations 
Annotation tours, exports, XR or performanceModelViewer section index 
Export/import scene filesBindingBuilder 
API shapesTypes 
A complete feature implementationExamples 

Verify the result

  1. Run the application’s typecheck and production build.
  2. Open the page in a browser with WebGL support.
  3. Confirm the model URL returns model data rather than an HTML error page.
  4. Confirm the viewer has height and its own stylesheet is imported.
  5. Confirm model-loaded/error callbacks and one intended interaction.
  6. For licensed components, check the key and the deployed domain against the plan.

If any step fails, use Troubleshooting . For existing projects, read the version and migration notes .