# ViroReact 3.0.3 for React Native AR, VR and mixed reality

> ViroReact gives React Native and Expo teams a TypeScript library for supported mobile, headset, visionOS and web XR targets. Adoption depends on its Fabric requirement, narrow peer version ranges and optional platform dependencies.

**ReactVision/viro** — ViroReact is the leading library for building AR and VR experiences and applications using React Native and Expo.

- Repository: https://github.com/ReactVision/viro
- Website: https://reactvision.xyz/viro-react
- Stars: 1,835 · Forks: 212
- Language: TypeScript
- License: MIT
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/reactvision-viro

## ViroReact's React Native AR and VR scope

ViroReact addresses the duplication that appears when one product needs a phone camera experience and a headset experience built with different rendering stacks. It provides React Native and Expo developers with a TypeScript-facing library for augmented reality, virtual reality and mixed reality. The documented targets include iOS with ARKit, Android with ARCore, Meta Horizon OS through OpenXR, Apple visionOS and the web through WebGL2 or WASM.

The intended users are application teams that already work in the React Native ecosystem. They can compose scenes with React components, TypeScript and native build configuration instead of introducing a separate engine and language for every target. The repository supports both React Native CLI and Expo projects, although Expo support does not remove the need for platform permissions and native build configuration.

This is a framework-level package rather than a small detection wrapper. The README lists plane detection, surface anchors, image and object recognition triggers, physically based lighting, HDR environment maps, real-time shadows, 360-degree media, portals, model loading, custom geometry, shaders, physics, animation, input events and spatial audio. That range makes the library relevant when an application needs several spatial-computing concerns within one scene. A project that only displays a simple 3D model may carry more native and dependency surface than it needs.

Some listed capabilities also depend on optional packages or hosted services. Cloud Anchors, Geospatial Anchors and AI-powered asset creation use ReactVision Platform and require `rvApiKey` and `rvProjectId`. The MIT license covers the open-source library, but that license does not by itself describe the operating or licensing model of every hosted platform service.

## How ViroReact connects scenes to native runtimes

The repository publishes its TypeScript entry point from `index.ts` and organizes the React-facing implementation under `components/`. Native project code is divided into `ios/` and `android/`, while `web-harness/` and `vite.config.ts` support the browser development path. Based on that layout, ViroReact is a cross-platform library with platform-specific code beneath a common component model rather than a web-only scene description.

At application level, scenes remain declarative. The README says developers can anchor content to detected surfaces or geographic coordinates, use image and object recognition as triggers, load OBJ and GLTF/GLB models, attach embedded animations and respond to events such as tap, drag, pinch, rotate, fuse and hover. The shared scene model can still depend on capabilities that differ by device. A feature listed for ARKit may not have an equivalent path on ARCore or the web renderer.

Web support requires the optional `@reactvision/viro-web-renderer` peer. visionOS support requires `@reactvision/react-native-visionos`. Installing the main package alone therefore does not make either target self-contained. The application must provide the renderer or native peer required by the selected runtime.

The repository also isolates functionality that can increase size or platform review requirements. `@reactvision/react-viro-onnx` provides the ONNX Runtime inference engine behind `ViroObjectDetector`. Without it, `ViroObjectDetector` returns no detections. The README says this separation avoids placing tens of megabytes of ONNX Runtime in applications that do not use object detection.

Face tracking follows a similar pattern. `ViroARSceneNavigator` requires `@reactvision/react-viro-face-tracking` for its `frontCameraEnabled` prop because iOS face tracking reaches the front camera through Apple's TrueDepth API. For a front-camera feed without face tracking, the README points to `ViroCameraTexture` with `cameraPosition="front"`, which remains in the core package.

## Installing ViroReact and starting an Expo project

The documented installation adds the main library to an existing React Native CLI or Expo application:

```bash
npm install @reactvision/react-viro
```

After the command completes, `@reactvision/react-viro` should be listed among the application's dependencies. It does not install the optional web or visionOS peers, so those targets require separate package choices documented for their respective runtimes.

The package version in `package.json` is 3.0.3. It declares React Native `>=0.86.0 <0.87.0`, React `>=19.0.0`, Expo `>=57.0.0 <58.0.0` and `react-native-web` `>=0.19.0`. The engine field repeats the React Native 0.86.x requirement. These ranges make compatibility checking part of installation rather than an optional later concern.

For Expo, the README identifies an official TypeScript starter as the easiest starting point:

https://github.com/ReactVision/expo-starter-kit-typescript

The README also directs developers to the ViroReact installation guide for platform permissions and build configuration:

https://viro-community.readme.io/docs/installation-instructions

A first project should target one platform rather than attempt every runtime at once. The library supports models, 360-degree environments, anchors and interaction components, but the README does not provide a complete minimal scene in its installation section. It also does not define a universal console message or device check that should appear after installation. The linked starter and installation guide are the documented sources for an executable first scene and the required native setup.

## React Native 0.86 and Fabric constraints

The clearest compatibility constraint appears in the `package.json` description: "New Architecture (Fabric) required." ViroReact 3.0.3 is not documented as a drop-in release for every React Native application. Its requirements include React Native 0.86.x, React 19.0.0 or later, and Expo 57.x.

That narrows upgrade planning. A team on React Native 0.85 cannot assume that the current package satisfies its declared engine range. A team on 0.86 still needs to confirm that the application and its other native packages are prepared for Fabric. The package contains native code for both `ios/` and `android/`, and those integrations are tied to the React Native architecture and version range.

The repository includes `scripts/check-ios-bridge.sh` and `scripts/audit-events.cjs`. Those scripts show that bridge checks and event auditing have dedicated project tooling. The README does not define when maintainers should run them or guarantee that passing them covers every native integration, so they should not be presented as a complete validation procedure without consulting the project's scripts and release documentation.

The platform matrix adds further boundaries. iOS has a deployment target of 15.1. visionOS requires deployment target 26.0 plus its optional peer. Meta Horizon OS support is documented through OpenXR for Quest 2, Quest Pro, Quest 3 and Quest 3S, with mixed reality on Quest 3 and Quest 3S. Web support uses the optional Viro web renderer. These boundaries make device selection part of technical evaluation rather than a final deployment detail.

## Local anchors versus ReactVision Platform services

ViroReact separates locally supported scene functions from hosted platform workflows. AR plane detection and local surface anchors appear in the standard tracking list. Cloud Anchors, Geospatial Anchors, co-location and VPS are marked as platform features. This distinction matters because persistent and collaborative AR can appear to be local library operations when their underlying infrastructure depends on ReactVision Platform.

Cloud Anchors support persistent, multi-user AR content. Geospatial Anchors attach content to latitude, longitude and altitude. Co-location allows devices in the same room to agree on a shared scene and replicate state. VPS can scan a room into a persistent coordinate frame, support later localization and optionally provide a world mesh for occlusion and physics. These are substantial workflows, but the README does not describe them as fully self-hosted.

The required configuration keys are `rvApiKey` and `rvProjectId`. An engineering review therefore has to account for account provisioning, application configuration, data handling and production operation. The README does not specify offline fallback behavior, quotas, storage retention or migration rules for anchors, so those details cannot be assumed from the open-source library.

The main alternative is to integrate lower-level native ARKit, ARCore or OpenXR functions with a separately built persistence and collaboration backend. That approach gives direct control over anchor services, accounts and storage, but it also requires platform-specific work outside a shared React Native component layer. ViroReact reduces that integration surface for teams using ReactVision Platform. It does not remove the dependency on its hosted infrastructure.

## Studio embedding and upgrade responsibilities

ReactVision Studio provides a browser-based visual editor around ViroReact. According to the README, developers can place 3D objects, images, video, text and primitives, then adjust position, rotation and scale through visual gizmos. Timelines can define keyframes, property animations and chained sequences. The README also describes dynamic, static and kinematic physics assignments, although its visible Studio section ends before completing the physics discussion.

The documented delivery path embeds a scene in a ViroReact application. Scenes created in Studio can update in production without a new application build. This may suit teams whose scene composition changes more often than native code. It also creates separate release boundaries for application code and hosted scene content.

AI-powered asset generation is listed as a ReactVision Platform feature. The README does not state whether locally authored Studio scenes can operate without platform access, and it does not document an export path that replaces Studio at runtime. Studio should therefore be evaluated as a hosted authoring and delivery option, not assumed to be an offline scene format.

Maintenance activity is recent. The repository is not archived, its last push was on 2026-10-15, and the releases include v3.0.3 on 2026-10-07, v3.0.2 on 2026-10-01 and v3.0.1 on 2026-09-21. The package is MIT licensed and publicly published on npm. Recent releases and activity do not remove the upgrade work associated with Fabric, native code, strict peer ranges, optional packages and hosted services.

Object detection and face tracking are intentionally optional, which keeps their native or runtime weight out of unrelated builds. Validation should distinguish core, ONNX, face-tracking, web and visionOS configurations. The first gate for an upgrade remains the React Native 0.86.x requirement and React `>=19.0.0` peer dependency.

## Conclusion

ViroReact fits teams already using React Native 0.86.x and React 19.0.0 or later that need a shared TypeScript scene layer for supported mobile, headset, visionOS or web targets. It is a poor fit for applications tied to another React Native release or teams requiring every capability to remain local and dependency-free. Check Fabric, the declared peer ranges, platform packages and ReactVision Platform requirements first.

## FAQ

### How do I install ViroReact in a React Native or Expo project?

Run `npm install @reactvision/react-viro`. The README also provides an official Expo TypeScript starter and directs developers to its installation guide for platform-specific setup.

### Does ViroReact support web and Apple visionOS?

Yes, but each target has an optional dependency. Web requires `@reactvision/viro-web-renderer`, while visionOS requires `@reactvision/react-native-visionos` and deployment target 26.0.

### Why does ViroReact not return object detections?

`ViroObjectDetector` needs `@reactvision/react-viro-onnx`. The README states that without this package, it returns no detections.

## Sources

- [License: MIT](https://github.com/ReactVision/viro/blob/main/LICENSE)
- [Project website](https://reactvision.xyz/viro-react)
- [ReactVision/viro on GitHub](https://github.com/ReactVision/viro)
- [README](https://github.com/ReactVision/viro/blob/main/README.md)
- [Releases](https://github.com/ReactVision/viro/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/reactvision-viro
