HomeGuidesAPI ReferenceChangelogDiscussions
Hire a ReactVision Expert 🛠️Launch Studio 🖥️Sponsor on GitHub ❤️Log In
Changelog
fixed

ViroReact 3.1.1: Quest store fix and glTF materials

Meta Quest builds pass the Horizon Store's upload check again, and glTF models now render the way glTF defines them on every platform. Metals look metallic without an environment map, visionOS draws a model's normal, metallic-roughness, occlusion and emissive maps, and mirrored nodes draw their faces. Renderer binaries are rebuilt on virocore 3.1.1, and the web build uses @reactvision/viro-web-renderer 1.1.1. There are no new props or APIs. Read Check when upgrading before you update.

Meta Quest

  • Store uploads pass again. The Expo plugin declares com.oculus.permission.HAND_TRACKING next to horizonos.permission.HAND_TRACKING. 3.0.3 had dropped the old name, and the Horizon Store refuses an app that declares hand tracking without it. Horizon OS treats the two as one permission.
  • No more WRITE_EXTERNAL_STORAGE. The plugin now removes it from Quest builds, whichever library declares it. It gives a Quest app no storage access, and Meta's review asks you to justify every permission you declare.

Re-run npx expo prebuild to pick up both. See HorizonOS Setup Guide.

glTF rendering, everywhere

  • Metal surfaces look metallic without an environment map. The flat ambient light used to light them like matte paint.
  • normalTexture.scale and occlusionTexture.strength apply.
  • An occlusion map on its own UV set (TEXCOORD_1, a lightmap) samples that set. Not yet on visionOS, where such a map is left out.
  • Mirrored nodes (negative scale) in a GLB draw their faces.

visionOS

  • Viro3DObject draws a glTF model's normal, metallic-roughness, occlusion and emissive maps. It used to draw the base color only, so textured models looked flat.

Check when upgrading

  • A metallic model without a lightingEnvironment looks darker than in 3.1.0. This matches how glTF and three.js light it. Give metallic models a ViroLightingEnvironment.

Release notes on GitHub · CHANGELOG