pmndrs/uikit

🎨 user interfaces for react-three-fiber

TypeScript

3,250

597 commits

updated Oct 12, 2026

See the code

README

uikit

Build performant 3D user interfaces for threejs.


NPM NPM Twitter Discord

Perfect for games, XR (VR/AR), and any web-based Spatial Computing App.

What does it look like?

A simple UI with 2 containers horizontally aligned, rendered in fullscreen. When the user hovers over a container, the container's opacity changes.render of the above code

Source code when using @react-three/uikit:

import { createRoot } from 'react-dom/client'
import React from 'react'
import { Canvas } from '@react-three/fiber'
import { Fullscreen, Container } from '@react-three/uikit'

createRoot(document.getElementById('root')).render(
  <Canvas>
    <Fullscreen flexDirection="row" padding={10} gap={10}>
      <Container flexGrow={1} opacity={0.5} hover={{ opacity: 1 }} backgroundColor="red" />
      <Container flexGrow={1} opacity={0.5} hover={{ opacity: 1 }} backgroundColor="blue" />
    </Fullscreen>
  </Canvas>,
)

How to get started

If you are using @react-three/fiber, get started with building your first layout, take a look at our examples to see uikit in action. If you want to use vanilla three.js, visit this tutorial. Alternatively, learn more about:

Pre-styled component kits

We provide multiple kits containing themable pre-styled components.

default

based on Shadcn

horizon-kit

based on RLDS
Overview over all default componentsOverview over all horizon components
View All ComponentsView All Components
install via @react-three/uikit-default or @pmndrs/uikit-defaultinstall via @react-three/uikit-horizon or @pmndrs/uikit-horizon

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

flexbox
r3f
react
threejs
typescript
uikit
userinterface
yoga

pmndrs/uikit

🎨 user interfaces for react-three-fiber

TypeScript

3,250

597 commits

updated Oct 12, 2026

See the code

README

uikit

Build performant 3D user interfaces for threejs.


NPM NPM Twitter Discord

Perfect for games, XR (VR/AR), and any web-based Spatial Computing App.

What does it look like?

A simple UI with 2 containers horizontally aligned, rendered in fullscreen. When the user hovers over a container, the container's opacity changes.render of the above code

Source code when using @react-three/uikit:

import { createRoot } from 'react-dom/client'
import React from 'react'
import { Canvas } from '@react-three/fiber'
import { Fullscreen, Container } from '@react-three/uikit'

createRoot(document.getElementById('root')).render(
  <Canvas>
    <Fullscreen flexDirection="row" padding={10} gap={10}>
      <Container flexGrow={1} opacity={0.5} hover={{ opacity: 1 }} backgroundColor="red" />
      <Container flexGrow={1} opacity={0.5} hover={{ opacity: 1 }} backgroundColor="blue" />
    </Fullscreen>
  </Canvas>,
)

How to get started

If you are using @react-three/fiber, get started with building your first layout, take a look at our examples to see uikit in action. If you want to use vanilla three.js, visit this tutorial. Alternatively, learn more about:

Pre-styled component kits

We provide multiple kits containing themable pre-styled components.

default

based on Shadcn

horizon-kit

based on RLDS
Overview over all default componentsOverview over all horizon components
View All ComponentsView All Components
install via @react-three/uikit-default or @pmndrs/uikit-defaultinstall via @react-three/uikit-horizon or @pmndrs/uikit-horizon

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

flexbox
r3f
react
threejs
typescript
uikit
userinterface
yoga

Project health

Latest release

1.0.76 · Sep 1, 2026

Releases this year

34

Significant stargazers

(top 24 of 32)

Jared Forsyth

1,314 followers · starred Mar 2024

Fabio Spampinato

1,977 followers · starred Feb 2024

Joe Pea

727 followers · starred Sep 2024

Matic Zavadlal

388 followers · starred Feb 2024