margelo/react-native-filament

🐧 A real-time physically based 3D rendering engine for React Native

C++

1,423

515 commits

updated May 27, 2026

See the code

README

react-native-filament

Features

react-native-filament is a powerful 3D rendering engine for React Native. It features:

  • 🧊 Native C++ physically based rendering using filament
  • πŸ€ Native C++ physics using bullet3
  • 🏎️ GPU-accelerated by Metal and OpenGL/Vulkan
  • πŸ“Ή Renders on separate Threads
  • πŸ“¦ Easy to use reactive declarative API
  • πŸ“š Well documented
  • βœ… Supports old and new arch

Installation

See the installation guide in the docs.

Example

import { FilamentScene, FilamentView, Model, Camera, DefaultLight } from 'react-native-filament'

function App() {
  return (
    <FilamentScene>
      <FilamentView
        style={{ width: 100, height: 100 }}
        model={model}
      >

        {/* Render with the default camera and light: */}
        <Camera />
        <DefaultLight >

        {/* Add a model to the scene (only glb supported yet): */}
        <Model source={require('./duck.glb')}>

      </FilamentView>
    </FilamentScene>
  )
}

See the example app

Comparison with other libraries

One library to render 3D content is expo-gl usually used together with expo-three. react-native-filament has a few advantages over expo-gl:

  • Supports using glb files out of the box
  • On iOS react-native-filament uses Metal, where expo-gl is using the deprecated OpenGL ES apple framework
  • The rendering happens on the JS thread for expo-three, where react-native-filament uses a separate thread (and filament processes the rendering commands in a pool of different threads)
  • filament is battle tested and react-native-filament is used in production apps with millions of users already, proven to be highly stable

Contributing

We welcome contributions to react-native-filament! πŸŽ‰

After cloning the repo make sure you have the submodules clones as well:

git submodule update --init --recursive --depth 1

Install all node modules (including the examples)

cd package
bun i

And finally build filament and bullet3:

# Inside ./package
bun build-bullet3
bun build-filament:release # or yarn build-filament:debug

You can then build one of the example apps in package/example/AppExamplePaper or package/example/AppExampleFabric.

Note: If building filament fails for you, you can download the pre-built binaries from the npm package. Simply run bun setup-filament-quick. The binaries will be in release build and any edits in /filament will be ignored (as you're not building from source in this case).

Adopting at scale

react-native-filament is provided as is.

If you need help with integrating react-native-filament in your app or have additional bugfixing or feature requests, reach out to us at margelo.com.

Socials

Attributions & thanks

Slay

react-native-filament was built for- and mostly funded by Slay - the creators of Pengu! 🐧 Without them, react-native-filament wouldn't exist, so thanks Slay! ❀️

Filament and Bullet3

react-native-filament uses filament (an amazing library by Google), and bullet3 (an amazing physics library by Bullet Physics). Without those core libraries and the geniuses behind them, react-native-filament wouldn't exist - so thanks Google & Bullet! ❀️

Copyrights

The example app in this project uses several free assets:

3d
android
engine
filament
gltf
ios
metal
model
opengl
physics
react-native
rendering
threejs
vulkan

margelo/react-native-filament

🐧 A real-time physically based 3D rendering engine for React Native

C++

1,423

515 commits

updated May 27, 2026

See the code

README

react-native-filament

Features

react-native-filament is a powerful 3D rendering engine for React Native. It features:

  • 🧊 Native C++ physically based rendering using filament
  • πŸ€ Native C++ physics using bullet3
  • 🏎️ GPU-accelerated by Metal and OpenGL/Vulkan
  • πŸ“Ή Renders on separate Threads
  • πŸ“¦ Easy to use reactive declarative API
  • πŸ“š Well documented
  • βœ… Supports old and new arch

Installation

See the installation guide in the docs.

Example

import { FilamentScene, FilamentView, Model, Camera, DefaultLight } from 'react-native-filament'

function App() {
  return (
    <FilamentScene>
      <FilamentView
        style={{ width: 100, height: 100 }}
        model={model}
      >

        {/* Render with the default camera and light: */}
        <Camera />
        <DefaultLight >

        {/* Add a model to the scene (only glb supported yet): */}
        <Model source={require('./duck.glb')}>

      </FilamentView>
    </FilamentScene>
  )
}

See the example app

Comparison with other libraries

One library to render 3D content is expo-gl usually used together with expo-three. react-native-filament has a few advantages over expo-gl:

  • Supports using glb files out of the box
  • On iOS react-native-filament uses Metal, where expo-gl is using the deprecated OpenGL ES apple framework
  • The rendering happens on the JS thread for expo-three, where react-native-filament uses a separate thread (and filament processes the rendering commands in a pool of different threads)
  • filament is battle tested and react-native-filament is used in production apps with millions of users already, proven to be highly stable

Contributing

We welcome contributions to react-native-filament! πŸŽ‰

After cloning the repo make sure you have the submodules clones as well:

git submodule update --init --recursive --depth 1

Install all node modules (including the examples)

cd package
bun i

And finally build filament and bullet3:

# Inside ./package
bun build-bullet3
bun build-filament:release # or yarn build-filament:debug

You can then build one of the example apps in package/example/AppExamplePaper or package/example/AppExampleFabric.

Note: If building filament fails for you, you can download the pre-built binaries from the npm package. Simply run bun setup-filament-quick. The binaries will be in release build and any edits in /filament will be ignored (as you're not building from source in this case).

Adopting at scale

react-native-filament is provided as is.

If you need help with integrating react-native-filament in your app or have additional bugfixing or feature requests, reach out to us at margelo.com.

Socials

Attributions & thanks

Slay

react-native-filament was built for- and mostly funded by Slay - the creators of Pengu! 🐧 Without them, react-native-filament wouldn't exist, so thanks Slay! ❀️

Filament and Bullet3

react-native-filament uses filament (an amazing library by Google), and bullet3 (an amazing physics library by Bullet Physics). Without those core libraries and the geniuses behind them, react-native-filament wouldn't exist - so thanks Google & Bullet! ❀️

Copyrights

The example app in this project uses several free assets:

3d
android
engine
filament
gltf
ios
metal
model
opengl
physics
react-native
rendering
threejs
vulkan

Project health

Latest release

1.11.0 Β· May 27, 2026

Releases this year

2

Significant stargazers

Phil Pluckthun

1,854 followers Β· starred Jul 2024

Fernando Rojo

3,240 followers Β· starred Jul 2024

Szymon Rybczak

352 followers Β· starred Jul 2024

FTCHD

60 followers Β· starred Jan 2026