Skip to content

React Native Quickstart

SceneView provides a React Native module that bridges to native SceneView rendering on both Android (Filament) and iOS (RealityKit).

Install

npm install @sceneview-sdk/react-native
cd ios && pod install

Usage

3D Scene

import { SceneView } from '@sceneview-sdk/react-native';

export default function ModelViewer() {
  return (
    <SceneView
      style={{ flex: 1 }}
      modelNodes={[
        { src: 'models/damaged_helmet.glb', scale: 1.0 }
      ]}
      environment="environments/sky_2k.hdr"
      cameraOrbit={true}
    />
  );
}

AR Scene

import { ARSceneView } from '@sceneview-sdk/react-native';

export default function ARViewer() {
  return (
    <ARSceneView
      style={{ flex: 1 }}
      modelNodes={[
        { src: 'models/chair.glb', scale: 0.5 }
      ]}
      planeDetection={true}
      onPlaneDetected={(event) => {
        console.log('Plane detected:', event.nativeEvent);
      }}
    />
  );
}

How It Works

React Native (TypeScript)
  └── Native Component
        ├── Android → SimpleViewManager → ComposeView → SceneView { }
        └── iOS → RCTViewManager → UIHostingController → SceneView { }

Props

SceneView

Prop Type Description
modelNodes ModelNode[] Array of models to display
environment string HDR environment path
cameraOrbit boolean Enable orbit camera controls
onTap (event) => void Tap event with 3D coordinates

ARSceneView (extends SceneView)

Prop Type Description
planeDetection boolean Enable plane detection
depthOcclusion boolean Enable LiDAR depth occlusion
onPlaneDetected (event) => void Plane detection event

Type Definitions

interface ModelNode {
  src: string;           // glTF/GLB path
  position?: [number, number, number];
  rotation?: [number, number, number];
  scale?: number;
  animation?: boolean;
}