ViroReact is the most widely used open-source library for building augmented and virtual reality apps with React Native and Expo. Your existing TypeScript skills, your existing toolchain, just point them at 3D space. No new engine, no new languages, no steep learning curve.
ViroReact is the most-used XR framework in the React Native ecosystem. Unlike WebXR solutions that render into a browser canvas, ViroReact converts your React Native code into true native draw calls - giving you access to ARKit on iOS and ARCore on Android at full hardware speed, with device-specific features intact. That native rendering layer also unlocks additional capabilities including: custom shaders that run directly on the device GPU, real-time PBR lighting, and hardware-accelerated physics. Write once, ship natively to iOS, Android, and beyond.
| Platform | Status |
|---|---|
| 🍎 iOS (ARKit) | ✅ Supported |
| 🤖 Android (ARCore) | ✅ Supported |
| 🥽 visionOS | ⏳ Internal Preview |
| ◼ Meta HorizonOS | Coming Soon |
| 🤖 Android XR | Coming Soon |
The ViroReact Starter Kit is an Expo + TypeScript project with working AR demos ready to run on your device. It covers the core concepts - scenes, 3D objects, user interaction, plane detection, shaders - so you can learn by tweaking real examples rather than starting from a blank file.
Official ViroReact Starter Kit ViroReact is licensed under the MIT License. There are no paywalls, no feature tiers, no runtime fees, and no strings attached. The full source is on GitHub — fork it, extend it, or contribute back. A community of developers collaborates with the ReactVision team to keep things stable and moving forward.
ViroReact is a React Native library, which means your existing mobile team can build AR experiences without switching tools, learning a new language, or hiring specialists. Everything - state management, navigation, CI, TypeScript types - works exactly as it does in the rest of your app.
Cloud Anchors and Geospatial Anchors now connect to the ReactVision platform by default. Simply use an rvApiKey and rvProjectId from your ReactVision account and the platform handles anchor hosting, resolution, and geospatial infrastructure for you. This is the same backend that powers ReactVision Studio, and it makes persistent and location-based AR significantly easier to set up and scale. ARCore remains available as an explicit option for teams who prefer.
ViroReact gives you a production-grade 3D rendering engine through standard React Native components. Here's what ships out of the box - no third-party plugins, no paid add-ons.
Detect real-world horizontal and vertical surfaces via ARKit (iOS) and ARCore (Android). ViroARPlaneSelector lets users tap to place 3D content precisely on detected surfaces. Cloud Anchors take this further - anchor content persistently so it survives app restarts and can be shared between multiple users in the same physical space.
Trigger AR experiences when the camera sees a specific image; product packaging, posters, business cards. Register targets with ViroARTrackingTargets, then attach any scene content to a ViroARImageMarker. For physical 3D objects, ViroARObjectMarker anchors content directly to recognised real-world items.
Add a physicsBody prop to any scene object to bring it into the physics simulation. Dynamic bodies respond to gravity, forces, and impulses. Static bodies act as immovable surfaces. Collision callbacks fire on impact, letting you drive animations, sounds, or game logic directly from your React Native component state.
Create fire, smoke, rain, snow, confetti, and other effects using configurable quad-based particle emitters. Control spawn rate, lifetime, volume shape, velocity, and opacity over a particle's life - all through React Native props. Multiple emitters can be layered: a campfire scene might combine separate flame, ember, and smoke emitters to build a convincing effect.
Physically-based rendering (PBR) and HDR lighting bring 3D content to life with accurate reflections and realistic shading. Directional, omni (point), and spot lights all support real-time shadow casting. ViroLightingEnvironment uses a 360° HDR image as an environment light map so objects reflect their real surroundings.
Declare named animations with ViroAnimations and run them on any object via ViroAnimatedComponent. Animate position, rotation, scale, opacity, and material properties. Animations can be sequenced and chained - run A, then B, then loop C - letting you build complex choreographed experiences without stepping outside the React Native component model.
Three audio modes cover every use case: background stereo via ViroSound, positioned 3D audio via ViroSpatialSound (with distance-based attenuation), and ambisonic 360° sound fields via ViroSoundField. Parent a spatial sound to an animated object and it moves through the scene with it.
ViroPortal punches a hole in the real world and renders a fully immersive 3D environment on the other side. The portal can be any 3D mesh — a doorframe, an archway, a tear in space. It works well for virtual showrooms, brand experiences, and games where users step into another world without leaving your React Native app.
Wrap users in 360° photo or video environments using Viro360Image and Viro360Video as full scene skyboxes. Play standard video on any surface with ViroVideo, or use ViroMaterialVideo to project a live video feed as a material texture on a 3D object. Animated images support sprite sheets and looping GIF-style content in-scene.
Load OBJ, FBX, and GLTF/GLB models with Viro3DObject, including embedded animations and materials. Primitive shapes - box, sphere, polygon, polyline - cover simpler cases. ViroGeometry handles fully custom procedural meshes defined by vertex arrays, normals, and UVs. All objects participate in the same lighting, physics, and animation systems.
Handle tap, drag, pinch, rotate, fuse (gaze-dwell), hover, and click events on any 3D object using the same event handler pattern as the rest of React Native. AR hit testing maps a screen touch to a 3D world position for intuitive object placement. ViroDragPlane constrains dragging to a specific plane or axis.
Cloud Anchors and Geospatial AR are powered by the ReactVision platform and handles anchor hosting, resolution, and geospatial infrastructure for you. Cloud Anchors let multiple users share persistent AR content at the same physical location, surviving app restarts. The Geospatial API anchors 3D content to precise real-world coordinates (latitude, longitude, and altitude) using GPS and Visual Positioning System (VPS). ARCore anchors are also supported.
If your team needs hands-on help, whether that's architecting a new AR feature, migrating from another provider like 8th Wall or Unity, integrating ViroReact into an existing app, or getting a production experience shipped, the ReactVision team is available. We work directly with organisations adopting XR at scale.
ViroReact is built on React Native, which means whether you're writing code yourself or working with an AI coding agent, you're working in one of the best-understood tech stacks in the world. Declarative JSX, typed props, familiar component patterns - the kind of clean, readable code that's easy to reason about, easy to review, and easy for an agent to get right first time. The example below puts plane detection, image recognition, physics, and particle effects in a single TSX file. No engine-specific scripting, no unfamiliar paradigms - just components.
Unity AR Foundation and Niantic Lightship are solid choices if you have a C# game development team and are comfortable managing cloud infrastructure. If you have a React Native team shipping a mobile app, ViroReact is a much better fit - and the ReactVision platform means you get managed Cloud Anchor and Geospatial infrastructure out of the box, for free.
| Feature | ViroReact | Unity AR Foundation | Niantic Lightship |
|---|---|---|---|
| Language | TypeScript / React Native | C# (Unity Engine) | C# (Unity Engine) |
| Open Source | ✓ MIT License | Proprietary engine | Proprietary SDK |
| Cost | Free forever (MIT) | Free up to $200K revenue, then from $2,200/seat/yr | Free core SDK, fees above 50K monthly active users |
| React Native integration | ✓ First-class | Requires complex native bridge | Requires complex native bridge |
| Expo support | ✓ Full support | Not compatible | Not compatible |
| Native AR rendering | ✓ ARKit + ARCore | ✓ Via AR Foundation | ✓ ARKit + ARCore |
| Plane detection | ✓ Built-in | ✓ Via AR Foundation | ✓ Built-in |
| Image recognition | ✓ Built-in | ✓ Via AR Foundation | ✓ Via AR Foundation |
| Physics engine | ✓ Built-in | ✓ PhysX | ⚠ Via Unity only |
| Particle system | ✓ Built-in | ✓ Unity VFX Graph | ⚠ Via Unity only |
| Cloud Anchors | ✓ ReactVision platform (default) | ✓ Via ARCore / Google Cloud | ✓ Lightship VPS |
| Geospatial AR | ✓ ReactVision platform (default) | ⚠ Via ARCore / Google Cloud | ✓ Lightship VPS |
| Managed backend infrastructure | ✓ ReactVision platform | Self-managed (Google Cloud) | Niantic hosted (proprietary) |
| Scene semantics | ✓ Built-in (12 labels) | ⚠ Limited | ✓ Semantics + object detection (200+ classes) |
| Team ramp-up time | Days (existing RN skills) | Months (new engine + language) | Months (new engine + language) |
Add ViroReact to an existing project, or spin up a fresh one with the Starter Kit.
Drop ViroReact into any existing React Native or Expo project.
Prefer a clean slate? The Starter Kit is an Expo + TypeScript template with working AR demos ready to run.
Official ViroReact Starter KitFull API reference, guides, and code samples - everything from basic scenes to cloud anchors and particle effects.
ViroReact DocsHave 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.
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
© 2025 - 2026 ReactVision, Inc. All rights reserved.
Site version 1.8.5
llms.txt | Sitemap | StudioGo Privacy Policy | Play AR Privacy Policy