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

ViroReact 3.0.2 — Studio co-location & web player reliability

The web player, fixed against real scenes, and co-location in StudioSceneNavigator. Large models load instead of killing the renderer, taps land where they are drawn, and web AR holds steady through tracking dropouts. A Studio scene can now be shared between devices in the same room. Web needs @reactvision/viro-web-renderer 1.0.1 (peer range asks for it).

Studio co-location (new)

Share a Studio-authored scene with other devices in the same physical space via the colocation prop on StudioSceneNavigator:

// Host — scans the space and creates a room with a six-character join code
<StudioSceneNavigator colocation={{ mode: "host" }} />

// Join — aligns to the host's space
<StudioSceneNavigator colocation={{ mode: "join", code: "AB12CD" }} />
  • A live room shares variables, visibility, tap-to-place positions (last write wins), drags (dragging device holds the asset), and NAVIGATE. Animation triggers and sounds play on every device while the function behind them runs on one. Collision bindings keep running when the host leaves.
  • State and control: onColocationStateChange, onColocationRoom, colocationIndicator, plus ref methods leaveColocation(), getColocationRoom(), finishColocationScan(), retryColocation(). Use StudioColocationIndicator or useStudioColocation() for custom UI.
  • Joiners that connect before the host has placed the scene report waiting_for_host. connectTimeoutMs (default 60 s) fails a room that never comes up with CONNECT_TIMEOUT / HOST_TIMEOUT.
  • Works with an API key or a Studio session (rvSetStudioSession also reaches cloud anchors and the co-location channel). A Quest host shares a Meta spatial anchor instead of scanning.
  • Rooms stay same-family (phone↔phone, Quest↔Quest). Web cannot host or join (FRAME_KIND_UNSUPPORTED).

See Co-Location and StudioSceneNavigator.

Fixed on the web

  • Renderer memory grows to 2 GB (was fixed at 256 MB); glTF loads no longer copy the model.
  • StudioSceneNavigator takes onAssetError(asset, error) and onRendererAbort (also shows renderError in the canvas's place). Studio scenes mount once.
  • Taps are no longer mirrored vertically. Transparent image borders no longer hide what is behind them.
  • Web AR holds its last pose through a dropout and smooths it. arOptions accepts feedWidth, feedHeight, and poseSmoothing.
  • Denied motion permission is reported through onMotionUnavailable on ViroARSceneNavigator and StudioSceneNavigator.

Native

  • Meta Quest: gaze on every headset, screen capture (takeScreenshot / startVideoRecording / stopVideoRecording — left eye, not passthrough; RECORD_ERROR_NOT_READY until rendering), AR hit test from JS (performARHitTestWithRay / WithWorldPoints), click haptics, left-palm menu pinch. Hit tests, screenshots and recordings no longer crash or come out black; laser follows drag; drag ends if the node leaves the scene.
  • Remounting a navigator works on every platform (physics teardown, iOS text, Android first frame).
  • iOS / RN 0.86: native module calls wait for view mount; ViroCamera / useViroMapCamera work; conditional child unmount and gesture-during-AR-teardown crash fixes.
  • cancelCloudAnchorOperations() now cancels ReactVision hosts, resolves and scans (ErrorCancelled). It used to be a no-op.
  • Renderer binaries rebuilt on virocore 3.0.2 and Spatial 1.3.0; scan-host floor raised to 300 points.