Build AR apps with
React Native and Expo.

Everything you need for AR in React Native: ViroReact, the open-source AR library in production since 2017, the ViroReact MCP Server so your AI coding agent writes scenes that run first time, and a Starter Kit with working demos. Native ARKit and ARCore performance, no Unity.

ViroReact MCP ServerStarter Kit
iOS (ARKit)Android (ARCore)ExpoHorizonOS

How to build an AR app with React Native

Four steps from empty project to AR running on a phone, using ViroReact, the open-source AR library for React Native.

01

Install ViroReact

Start from the Starter Kit, an Expo + TypeScript template with working AR demos, or add ViroReact to an existing React Native or Expo app with npm install @reactvision/react-viro.

02

Create a development build

AR runs on native ARKit and ARCore modules, so ViroReact cannot run in Expo Go. Add the Viro config plugin to app.json, then build a development client with EAS Build or npx expo run.

03

Write your first AR scene

Render a ViroARSceneNavigator with a ViroARScene inside. Declare 3D text, models, lights, and animations as React components with typed props. The code below is a complete working app, or connect the ViroReact MCP Server and let your coding agent write it.

04

Run it on a phone

AR needs a physical iOS or Android device, simulators and emulators are not supported. Install your development build, point the camera at a surface, and your scene renders in the room.

$npm install @reactvision/react-viro
App.tsx
import React, { useState } from 'react';
import {
  ViroARScene,
  ViroARSceneNavigator,
  ViroText,
  ViroTrackingStateConstants,
} from '@reactvision/react-viro';

function HelloArScene() {
  const [text, setText] = useState('Initializing AR...');
  return (
    <ViroARScene
      onTrackingUpdated={(state) => {
        if (state === ViroTrackingStateConstants.TRACKING_NORMAL) {
          setText('Hello, React Native AR!');
        }
      }}
    >
      <ViroText
        text={text}
        scale={[0.5, 0.5, 0.5]}
        position={[0, 0, -1]}
      />
    </ViroARScene>
  );
}

export default function App() {
  return (
    <ViroARSceneNavigator
      autofocus
      initialScene={{ scene: HelloArScene }}
    />
  );
}
Development build required. ViroReact does not run in Expo Go because AR APIs need native modules. You will need a development build to test on device, and AR requires a physical iOS or Android phone, simulators and emulators are not supported.

Let your AI agent write the ViroReact

The ViroReact MCP Server connects your AI coding agent (Claude Code, Cursor, Copilot) to full, current context of the renderer: components, prop schemas, event handlers, valid scene patterns, and working examples, plus tools to validate and run the scenes it writes. Connect it and your agent ships React Native AR that runs first time, reviewed instead of debugged.

The ViroReact MCP server in use during a Claude Code session

AR in React Native, on the stack you already use

ViroReact is a first-class React Native library. There is no new engine to learn, no new language to adopt.

Native performance, not WebAR

Compiles to true native ARKit and ARCore draw calls, not a browser canvas. Hardware-speed rendering, occlusion, PBR lighting, and shaders.

Full Expo support

Use Expo with development builds. The Starter Kit ships as an Expo + TypeScript project with working AR demos.

TypeScript and JSX, not C#

Declarative components, typed props, familiar React patterns. Your existing CI, linting, and testing all just work.

AI-friendly stack

Clean JSX and typed props, plus the ViroReact MCP Server feeding your agent live component knowledge. AI tools reason about your AR scene like any other React component.

Prefer no code? Design AR scenes in your browser

ReactVision Studio is the visual editor for the same renderer. Design a scene in your browser, publish it, and drop it into your app with the StudioSceneNavigator component. Connected apps pick up scene updates without a redeploy.

React Native AR vs Unity vs WebAR

Where ReactVision sits against a browser-based runtime and a full game engine, line by line.

CapabilityWebARUnity AR FoundationReactVision
Stack and languageJavaScript / WebGLC# + Unity EngineTypeScript + React Native
Visual scene editorVaries by libraryUnity Editor, C# scriptingStudio in your browser, no code
AI 3D asset generationThird-party onlyThird-party onlyBuilt into Studio
Cloud + Geospatial AnchorsThird-party servicesSelf-managed Google CloudBuilt into Platform
Open source rendererMixed by libraryProprietary engineViroReact, MIT licensed
RenderingBrowser canvas (WebGL)NativeNative via ARKit and ARCore
Cost at scalePer-view fees common$2,200 / seat / yr above $200K revFree renderer, tiered Platform
Team ramp-upDays for web devsMonths, new engineDays for React Native devs

Common questions about React Native AR

Can you build AR apps with React Native?
Yes. ViroReact has been the answer since 2017. It is the most widely used open-source AR and VR library for React Native, used in production by retail, education, and entertainment apps on iOS and Android.
How do I build an AR app with React Native?
Install ViroReact with npm install @reactvision/react-viro, create a development build (AR needs native modules, so Expo Go will not work), write a ViroARScene, and run it on a physical device. The four-step guide on this page walks through it, and the Starter Kit gives you a working Expo + TypeScript AR app to begin from.
What is the best AR library for React Native?
ViroReact is the most established AR library for React Native: MIT licensed, in production since 2017, and downloaded over 140,000 times a month on npm. Alternatives are mostly thin wrappers around ARKit or ARCore that leave scene management to you; ViroReact gives you declarative React components for the full 3D scene graph, plus Studio for visual editing.
Does it work with Expo?
Yes, with full Expo support. You need an Expo development build rather than Expo Go. The Starter Kit is an Expo + TypeScript template that handles the dev-build setup.
Can my AI coding agent write ViroReact code?
Yes. The ViroReact MCP Server connects agents like Claude Code, Cursor, and Copilot to current, accurate ViroReact knowledge: component schemas, event handlers, scene patterns, and working examples, plus tools to validate and run the scenes they write. It is free to use with a Studio account.
Do I need to know 3D modelling or shaders?
No. ViroReact gives you declarative React components for 3D primitives, models, lights, and materials, so most AR scenes are plain TypeScript. It loads OBJ, FBX, and GLTF/GLB models directly, and ReactVision Studio adds visual editing with AI 3D asset generation when you want it.
Can I update the AR scene without redeploying my app?
Yes. The scene lives in your Studio project. Edit, publish, and connected apps pull the new scene the next time they load it.
What does it cost?
ViroReact is MIT licensed, free forever, fully open source. Scene editing and platform features (Cloud and Geospatial Anchors) are available via Studio on a free tier, with paid tiers for production apps.
How does this compare to Unity AR Foundation or 8th Wall?
Unity gives a full game engine in C# with months of ramp-up. 8th Wall is browser-based, trading native performance for no-install access. ViroReact sits between the two, native ARKit and ARCore performance through familiar React Native APIs, ramp-up in days.

Start building AR with ViroReact

Install ViroReact, connect the MCP Server to your coding agent, and ship native AR in your React Native or Expo app.

ViroReact MCP ServerGet the Starter Kit
$npm install @reactvision/react-viro

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.