React Native + Expo AR

Build Native AR Apps
with React Native and Expo

ViroReact is the open-source library for building production AR apps with React Native and Expo. Full ARKit and ARCore access, declarative components, TypeScript-first - no Unity, no C#, no new engine to learn.

$ npm install @reactvision/react-viro
MIT
Open Source
Native
ARKit + ARCore
Free
Forever, No Tiers

Why ViroReact for React Native AR

Most AR engines hand you a renderer and leave the rest to figure out. ViroReact is built around the React Native model you already know, so the learning curve is shorter and the code stays clean.

TypeScript-First, Declarative

Build AR scenes with JSX components and typed props. The same React Native patterns you use for screens - just rendered in 3D space.

True Native Rendering

ViroReact compiles to native ARKit on iOS and ARCore on Android - not a browser canvas. Hardware-speed performance, device features intact.

Full Expo Support

ViroReact works inside an Expo project via a development build. Bring your existing Expo workflow, ship AR alongside it.

Built-in Physics + Particles

Dynamic and static physics bodies, collision callbacks, and a particle system for fire, smoke, rain, snow, and confetti - no plugins required.

PBR Lighting and Shadows

Physically-based materials, HDR environment maps, real-time shadow casting - the kind of visual quality your users expect on modern devices.

MIT Licensed, Free Forever

No paywalls, no feature tiers, no runtime fees, no per-seat charges. The full source is on GitHub. Use it in commercial products, no questions asked.


Mobile AR Features, Built In

Everything you need to ship a production AR experience - tracking, anchoring, interaction, audio, and rendering - lives inside a single library. No third-party plugins, no paid add-ons.

Tracking

Plane and Surface Detection

Horizontal and vertical plane detection with surface anchors. Place content on floors, walls, tables, and any detected surface in real time.

ViroARPlane ViroARPlaneSelector
Recognition

Image and Object Triggers

Detect printed images, posters, packaging, and physical objects to trigger AR content. Great for retail, marketing, and museum experiences.

ViroARImageMarker ViroARObjectMarker
Models

3D Model Loading

Load OBJ, FBX, and GLTF/GLB models with embedded animations. Build custom procedural geometry from vertex arrays when you need full control.

Viro3DObject ViroGeometry
Interaction

Full Gesture Input

Tap, drag, pinch, rotate, fuse, and hover events on every node. The same event model React Native developers already understand.

onClick onPinch onDrag
Audio

Spatial 3D Audio

Positional 3D audio, 360 degree sound fields, and ambient mixing - so audio behaves correctly as the user moves through your scene.

ViroSpatialSound ViroSoundField
Rendering

Custom Shaders on Device

Run custom vertex and fragment shaders directly on the device GPU for effects, post-processing, and stylised rendering.

ViroMaterials shader
HDR environment maps and real-time shadows
Declarative animation sequencing and chaining
360 degree photo and video environments
Portal rendering for pass-through experiences
Particle systems for fire, smoke, snow, confetti
Built-in physics with collision callbacks
Development Build Required
ViroReact uses native AR APIs, so it cannot run inside Expo Go. Use an Expo development build (or a bare React Native project) and a physical device - simulators do not support ARKit or ARCore.

Looks Like React Native, Because It Is

A scene is a component. A 3D object is a component. Anchors, lights, and materials are all props. If you have shipped a React Native app, you can read this on day one.

import { ViroARScene, ViroARPlane, Viro3DObject } from '@reactvision/react-viro';
 
export function Scene() {
  return (
    <ViroARScene>
      {/* Snap content to the first detected horizontal surface */}
      <ViroARPlane minHeight={0.3} minWidth={0.3} alignment={"Horizontal"}>
        <Viro3DObject
          source={require('./assets/model.glb')}
          position={[0, 0, 0]}
          scale={[0.2, 0.2, 0.2]}
          type="GLB"
          onClick={() => console.log('tapped')}
        />
      </ViroARPlane>
    </ViroARScene>
  );
}

ViroReact vs Unity AR Foundation vs Niantic Lightship

Unity and Niantic Lightship are capable engines - but they were not built for React Native teams. Here is how the trade-offs compare for a mobile AR project.

ViroReact
Unity AR Foundation
Niantic Lightship
Language
TypeScript, React Native
C#, Unity Engine
C#, Unity Engine
Open source
MIT licensed
Proprietary
Proprietary
Cost
Free forever
Free up to $200K rev, then from $2,200/seat/year
Fees apply above 50K monthly active users
React Native integration
First-class
Complex native bridges
Complex native bridges
Expo support
Full
Not compatible
Not compatible
Cloud + Geospatial Anchors
Built in via ReactVision Platform
Self-managed Google Cloud setup
Proprietary hosted infrastructure
Team ramp-up
Minutes, with existing RN skills
Months, new engine + language
Months, new engine + language

Code Your AI Assistant Already Understands

ViroReact is built on React Native - one of the best-understood stacks in the world for both human developers and AI coding agents. Declarative JSX, typed props, familiar patterns. The kind of code an AI agent gets right first time.

Familiar to every RN developer

Components, props, hooks, refs - the model your team already ships with. No engine-specific abstractions, no editor UI to learn before writing your first scene.

Easy for AI agents to reason about

Clean, readable JSX with typed props is exactly the input AI coding tools handle best. Pair-program your AR scenes the same way you pair-program the rest of your app.


Need Cloud Anchors, Geospatial AR, or 3D Assets?

ViroReact is the renderer. For the parts that need infrastructure - persistent shared anchors, world-coordinate AR, and 3D content creation - ReactVision Studio plugs straight in. Add an rvApiKey and rvProjectId, and the platform handles the rest.

Platform

Cloud Anchors

Persistent, multi-user shared AR content. Hosted and resolved on the ReactVision Platform - no third-party setup required.

Platform

Geospatial Anchors

Anchor AR content to real-world latitude, longitude, and altitude. Build location-based experiences without standing up your own backend.

Studio

AI 3D Asset Creation

Generate 3D models from text or image prompts inside ReactVision Studio, export them, and drop them straight into your ViroReact scene.


Start Building

The fastest way in is the official Expo + TypeScript starter kit. Working AR demos, ready to run on a real device.

Ready to ship native AR with React Native?

Install the package, pair it with the starter kit, and have a working AR scene running on your phone today.

Support

Community

Have a quick question or need feedback? Jump into our Discord for real-time chat, or post on r/ReactVision to get answers, code samples, and tips from thousands of fellow builders.

ReactVision Partners

Need deeper help? Engage a trusted ViroReact Partner. Certified agencies and consultants can architect, build, or optimise your XR app, run performance audits, and guide store launches so you ship faster with confidence.

Find a Trusted Partner
Find a Trusted Partner Logo, a white checkmark

© 2025 - 2026 ReactVision, Inc. All rights reserved.

Site version 1.9.3

llms.txt | Sitemap | StudioGo Privacy Policy | Play AR Privacy Policy