added
ViroReact 3.0.3 — Quest in-headset menu, iOS object detection & web bundling
about 11 hours ago by ReadMe API
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.
ViroXRSceneNavigatorlaunches VR once, on mount; afterwards the app's 2D panel shows an "Enter immersive view" button. Replace it with your own panel via the newrenderQuestPanel(enter)prop (also onStudioSceneNavigator). 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, yourquestMenuItems({ label, onPress }[], typeStudioQuestMenuItem) 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 declarescom.oculus.permission.BOUNDARY_VISIBILITY). - Expo plugin options:
android.questFeaturesdrops permissions an app does not use (colocation,eyeTracking,passthroughCamera— all defaulttrue), andandroid.questHorizonOsSdkwrites<horizonos:uses-horizonos-sdk>(minSdkVersion69 by default). Quest builds now declarehorizonos.permission.HAND_TRACKINGinstead of the deprecated Oculus name, no longer declare location, and no longer requireandroid.hardware.camera.
See HorizonOS Setup Guide and StudioSceneNavigator.
iOS
<ViroObjectDetector />mounts again. 3.0.2's prebuilt archive left outVRTObjectDetectorView("View config not found";@reactvision/react-viro-onnxfound nothing to attach to). Runpod installand rebuild. If the native view is ever missing, the component now renders nothing and callsonErrorwithVIRO_OBJECT_DETECTOR_UNAVAILABLE_ERRORinstead of a red box.- Session-only apps no longer ask for location when opening an AR scene: the Core Location feed starts only with
RVApiKeyandRVProjectId, 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'sAssetSourceResolver. 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.
rvSetStudioSessiontakes an optionalfunctionRegion. getRecordingStatusreturns"None","Recording","IOError"or"Unsupported"on Android too (new exported typeViroRecordingStatus). Apps that matched the old Android names (NONE,RECORDING, …) must switch.onCollisionfires against the AR world mesh, with the mesh'scollisionTag.- On Android,
startRecordingwithoutRECORD_AUDIOrejects instead of hanging. - A
ViroCameramounted between its siblings becomes the scene's camera — its position among siblings no longer matters. - visionOS:
ViroSpatialSound,ViroSoundFieldandViroObjectDetectorrender 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 brokepatch-packageand, via an oldexpo-modules-corepatch, iOS assets and icon fonts.
Full notes: GitHub release v3.0.3.