HomeGuidesChangelogDiscussions
Hire a ReactVision Expert 🛠️Launch Studio 🖥️Sponsor on GitHub ❤️Log In
Changelog
added

ViroReact 3.0.0 — Five platforms, VPS, co-location

ViroReact 3.0.0 runs on five platforms from one codebase — iOS, Android, Meta Quest, Apple Vision Pro, and the web — and ships three major capabilities: VPS, co-location, and mixed reality on Meta Quest.

Platforms

  • Apple Vision Pro is reachable through ViroXRSceneNavigator in an ImmersiveSpace. Pair @reactvision/react-native-visionos and scaffold visionos/ from @reactvision/visionos-template. Root scenes in ViroScene (not ViroARScene); components without a visionOS view manager warn once and render nothing instead of crashing.
  • Web runs via react-native-web and the optional peer @reactvision/viro-web-renderer (WebAssembly). 3D needs WebGL2; AR additionally needs HTTPS and a device with an IMU.

VPS

Scan a room into a persistent coordinate frame, host it, and localise back into it later or from another device — with an optional world mesh for occlusion and physics.

  • New observability: getScanStatus(), getScanDiagnostics(), and getWorldMeshStats() on the scene navigator. Poll getScanStatus() while walking a room; failed finishScan() results now carry diagnostics so you can tell the user which threshold fell short.
  • finishScan() without a preceding startScan() is refused. Failed world-mesh snapshots name the precondition that failed.

Co-location

  • <ViroARCloudAnchor> places children in a resolved cloud anchor's location frame — the same physical metre on every device that mounts the same cloudAnchorId.
  • Replicated room state via useViroReplicatedState and ViroReplicationClient — ordered, claim-before-write application state on its own socket.
  • Smoothing / rate limiting — useViroSmoothedPeers, useViroSmoothedEntities, useViroThrottledWrite.
  • Frame helpers — parseLocationTransform, locationToWorld, worldToLocation, invertTransform, poseCsv, transformDirection.

Co-location requires a paid ReactVision plan. See the Co-Location guide.

Meta Quest

Mixed reality uses the standard AR component API: pass a ViroARScene to ViroXRSceneNavigator. Plane anchors come from the headset's room model. New packaging defaults help Horizon Store validation (android.questArm64Only, android.questSupportedDevices).

Deprecated

  • onWorldMeshUpdated does not fire and never has. Poll getWorldMeshStats() instead. The prop remains so existing code compiles.

Fixed

  • iOS: AVKit / UIImagePickerController controls no longer lose gestures when Viro is in the same app.
  • Android: cloud-anchor and scan calls issued on a scene's first frame are queued until the AR session exists.
  • Quest: two-hand drag ownership, click-through on highlighted buttons, and a ViroController crash on first button event.

Migration

  • Clear Gradle caches if an incremental Android build picks up a stale renderer AAR.
  • No breaking changes for typical phone builds.