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

ViroReact 3.0.3 — Quest in-headset menu, iOS object detection & web bundling

Meta Quest gets an in-headset menu and stops reopening itself, iOS mounts ViroObjectDetector again, and the package bundles for the web. A patch release on top of 3.0.2, with renderer binaries rebuilt on virocore 3.0.3. iOS apps should run pod install and rebuild to pick up the fixed prebuilt archive.

Meta Quest

  • The headset view no longer reopens by itself after the wearer goes Home or opens Settings. ViroXRSceneNavigator launches VR once, on mount; afterwards the app's 2D panel shows an "Enter immersive view" button. Replace it with your own panel via the new renderQuestPanel(enter) prop (also on StudioSceneNavigator). Leaving VR now returns to the panel through Home, where the wearer left it.
<StudioSceneNavigator
  renderQuestPanel={(enter) => <MyPanel onEnterPress={enter} />}
  questMenuItems={[{ label: "Restart", onPress: restartScene }]}
/>
  • In-headset menu on the left controller's Y button (StudioSceneNavigator): scene name, shared-session status and join code, your questMenuItems ({ label, onPress }[], type StudioQuestMenuItem) and Exit. Pressing an item closes the menu. No hand-tracking equivalent yet; B and the left menu button still exit.
  • Scene HUD stays where it appears instead of following the head, explains why a shared session failed (for 5 s and in the Y menu), and its text is now sharp.
  • Studio scenes with plane detection no longer crash outside a shared session, and a plane scene opened after another AR scene now gets the room's planes.
  • The boundary is hidden while passthrough is on (XR_META_boundary_visibility; the plugin declares com.oculus.permission.BOUNDARY_VISIBILITY).
  • Expo plugin options: android.questFeatures drops permissions an app does not use (colocation, eyeTracking, passthroughCamera — all default true), and android.questHorizonOsSdk writes <horizonos:uses-horizonos-sdk> (minSdkVersion 69 by default). Quest builds now declare horizonos.permission.HAND_TRACKING instead of the deprecated Oculus name, no longer declare location, and no longer require android.hardware.camera.

See HorizonOS Setup Guide and StudioSceneNavigator.

iOS

  • <ViroObjectDetector /> mounts again. 3.0.2's prebuilt archive left out VRTObjectDetectorView ("View config not found"; @reactvision/react-viro-onnx found nothing to attach to). Run pod install and rebuild. If the native view is ever missing, the component now renders nothing and calls onError with VIRO_OBJECT_DETECTOR_UNAVAILABLE_ERROR instead of a red box.
  • Session-only apps no longer ask for location when opening an AR scene: the Core Location feed starts only with RVApiKey and RVProjectId, as before 3.0.2.
  • Camera recordings carry an audio track, and every recording promise settles.

Web

  • The package bundles with Vite and webpack. 3.0.2 shipped raw JSX in dist/; the build now uses the automatic JSX runtime, and assets resolve without React Native's AssetSourceResolver. See Web Setup Guide.

Everywhere

  • Studio, scene and cloud-anchor requests run in the platform database's region, falling back to unpinned when that region's edge runtime is down — faster scene loads far from London. rvSetStudioSession takes an optional functionRegion.
  • getRecordingStatus returns "None", "Recording", "IOError" or "Unsupported" on Android too (new exported type ViroRecordingStatus). Apps that matched the old Android names (NONE, RECORDING, …) must switch.
  • onCollision fires against the AR world mesh, with the mesh's collisionTag.
  • On Android, startRecording without RECORD_AUDIO rejects instead of hanging.
  • A ViroCamera mounted between its siblings becomes the scene's camera — its position among siblings no longer matters.
  • visionOS: ViroSpatialSound, ViroSoundField and ViroObjectDetector render nothing (with a one-time warning) instead of crashing. The visionOS Expo plugin no longer copies stale patches next to an app's own, which broke patch-package and, via an old expo-modules-core patch, iOS assets and icon fonts.

Full notes: GitHub release v3.0.3.