Skip to content

pmndrs/xr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f9a3c4f ยท Feb 21, 2025
Feb 19, 2025
Feb 1, 2025
Feb 1, 2025
Feb 21, 2025
Jul 10, 2024
Jul 10, 2024
Aug 29, 2024
Dec 1, 2024
Jul 10, 2024
Jan 28, 2025
Jan 11, 2025
Jul 10, 2024
Jan 21, 2025
Jan 28, 2025
Feb 21, 2025
Jul 10, 2024
Jul 10, 2024

Repository files navigation

xr

Turn any R3F app into an interactive immersive experience.


NPM NPM Twitter Discord

npm install three @react-three/fiber @react-three/xr@latest

What does it look like?

A simple scene with a mesh that toggles its material color between "red" and "blue" when clicked through touching or pointing. recording of interacting with the code below
import { Canvas } from '@react-three/fiber'
import { XR, createXRStore } from '@react-three/xr'
import { useState } from 'react'

const store = createXRStore()

export function App() {
  const [red, setRed] = useState(false)
  return (
    <>
      <button onClick={() => store.enterAR()}>Enter AR</button>
      <Canvas>
        <XR store={store}>
          <mesh pointerEventsType={{ deny: 'grab' }} onClick={() => setRed(!red)} position={[0, 1, -1]}>
            <boxGeometry />
            <meshBasicMaterial color={red ? 'red' : 'blue'} />
          </mesh>
        </XR>
      </Canvas>
    </>
  )
}

How to enable XR for your @react-three/fiber app?

  1. const store = createXRStore() create a xr store
  2. store.enterAR() call enter AR when clicking on a button
  3. <XR>...</XR> wrap your content with the XR component

... or read this guide for converting a react-three/fiber app to XR.

Tutorials

External Tutorials

Roadmap

  • ๐Ÿคณ XR Gestures
  • ๐Ÿ•บ Tracked Body

Migration guides

Sponsors

This project is supported by a few companies and individuals building cutting-edge 3D Web & XR experiences. Check them out!

Sponsors Overview