A pastel green SMEG two-slice toaster with a chrome base and lever, rendered by SceneView Web.

SMEG toaster by The Fresh Lab, CC BY 4.0

Declarative 3D and AR for Compose, SwiftUI and the web

SceneView renders 3D models and AR scenes inside Jetpack Compose, SwiftUI and web apps. Scenes are declared in code, like the rest of the UI.

implementation("io.github.sceneview:sceneview:4.67.0")
Android quickstart
  1. A transparent canvas on the pageSceneView.create(canvas, { transparent: true })
  2. A turntable rotationsetAutoRotate(true)
  3. Image-based lightingiblUrl, iblIntensity

The code and the scene it renders

Pick a model: the string in the code and the scene beside it change together. In the Compose tab, drag the value of scaleToUnits and watch the model follow.

// Android, Jetpack Compose
@Composable
fun ModelScreen() {
    SceneView(modifier = Modifier.fillMaxSize()) {
        rememberModelInstance(modelLoader, "models/armchair.glb")
            ?.let { instance ->
                ModelNode(
                    modelInstance = instance,
                    scaleToUnits = 1.0f,

                )
            }
    }
}

Drag 1.0f sideways, or focus it and use the arrow keys.

Stable on Android Compose quickstart
A tan leather armchair, rendered by SceneView.

Rivet Aiden armchair, Amazon Berkeley Objects, CC BY 4.0

Scan a whole room with your phone

The 3D Scan demo fuses ARCore depth into a coloured 3D model as you walk around. Turn it, cut the room open as a dollhouse, then place it in AR at its real size. Everything runs on the phone: no upload, no cloud.

Scanned on a Pixel 9 with the 3D Scan demo, rendered in real time by SceneView. Android; the detailed model needs ARCore Depth.

A kitchen, scanned in one walk and opened as a dollhouse
A garden terrace, scanned in under a minute

What you can build

AR placement at real size

Plane detection, anchors, depth occlusion and real-world scale: ARCore on Android, ARKit on iOS, written as composables and views.

Open the AR demo

The 3D formats you already use

glTF, GLB, USDZ, STL, OBJ, PLY and 3MF. glTF and GLB render on Filament, USDZ on RealityKit; STL, OBJ, PLY and 3MF are converted on load.

Formats guide

Compose UI inside the 3D scene

ViewNode renders real Compose content on a node: labels, cards and controls placed in 3D space.

Open the ViewNode demo

Try every demo on your phone: Google Play App Store Web demo

Funding and commercial support

SceneView is free and built in the open by its contributors. Donations and paid support pay for the fixes, the Filament upgrades and the releases that apps depend on.

Donations

Once or monthly, from a person or a company. Open Source Collective, the fiscal host, issues the invoice and the receipt, and a donor is listed nowhere unless they ask.

Commercial support

  • Incident: $600One reproducible problem. Within 3 business days: a minimal reproduction, the cause, and a workaround or a costed fix.
  • 2.3 LTS: $1,800 for 90 daysOne identified integration. Answers within 2 business days and up to 1 day of work a month; more work is quoted. The $600 of an Incident already bought is deducted.

Contracted and invoiced through Open Source Collective, the fiscal host; the money goes to the collective’s budget. Payment comes before any work. Every version stays under Apache 2.0.

Platform support

Native renderers underneath: Filament on Android, desktop and the web, RealityKit on Apple.

  • AndroidJetpack Compose, Filament, ARCoreStable
  • AppleiOS, macOS and visionOS in one SwiftUI package on RealityKit. AR on iOS. USDZ, no glTFAlpha
  • WebFilament WASM, WebGL2, glTFAlpha
  • DesktopCompose Desktop, Filament, JDK 21+Alpha
  • Android TVSame artifact as Android, D-pad inputAlpha
  • FlutterPlatform view over the native SDKsAlpha
  • React NativeFabric view over the native SDKsAlpha
  • Android XRJetpack XR SceneCorePlanned

Compose Multiplatform: one SceneViewer for Android, iOS and desktop, a viewer subset without AR. Feature matrix per platform

MCP server for AI coding assistants

SceneView ships an MCP server and an llms.txt, so any assistant that speaks MCP reads the real API instead of guessing it.

Any MCP client: run the server with npx

$ npx -y sceneview-mcp

Adoption

SceneView has more than 1,300 stars on GitHub, and over 500 public repositories declare it as a dependency.

Used in apps, SDKs and samples from:

Repository count from GitHub code search, owners sceneview and ThomasGorisse excluded, checked on October 28, 2026. Star count from the GitHub repository page. Apps checked in their Google Play builds, open-source apps and samples in their public build files and SDKs in their Maven Central POMs, on November 9, 2026. Logos are trademarks of their owners.

How SceneView compares

Compare SceneView with
SceneView compared with Unity, Filament used directly, Three.js and RealityKit
SceneViewUnityFilament, directThree.jsRealityKit
Declarative UICompose, SwiftUINo, editor and C#No, imperativeNo, imperativeSwiftUI
SetupOne Gradle or SwiftPM dependencySeparate engine, embedded as a libraryEngine, materials and loaders wired by handOne npm packagePart of the Apple SDKs
PlatformsAndroid stable; Apple, web, desktop, Flutter, React Native alphaMost platformsAndroid, Apple, desktop, webWebApple only
ARARCore, ARKitAR FoundationBring your ownWebXRARKit
RendererFilament, RealityKitUnityFilamentWebGL, WebGPURealityKit
Is SceneView the successor of Sceneform?

Yes. When Google archived Sceneform, the community kept it going as com.gorisse.thomas.sceneform, and SceneView grew out of that line with a Compose-first API on Filament. The migration guide covers the move from Sceneform.

How is SceneView different from Unity or a game engine?

SceneView is a UI library, not an engine you embed. A 3D scene is a composable or a SwiftUI view inside your existing app, with the same state, navigation and build. A game engine fits full games and editor-driven content; SceneView fits product viewers, AR placement and 3D inside an app’s own UI.

Which 3D formats does SceneView support?

glTF and GLB, rendered by Filament on Android, desktop and the web. USDZ, rendered by RealityKit on Apple platforms. STL, OBJ, PLY and 3MF files are converted on load.

Can AI coding assistants use SceneView?

Yes. SceneView publishes an MCP server (sceneview-mcp) and an llms.txt file, so any assistant that supports the Model Context Protocol can read the current API instead of guessing it. The docs give the setup for each client.

What is SceneView’s license?

Apache 2.0. The sample 3D models keep their own licenses, listed on the credits page.

Getting started

Each platform has a quickstart of about ten lines, and the web demo runs SceneView in the browser, with nothing to install.