Usage Data
What the usage ping ViroReact sends when a scene navigator mounts carries, and how to turn it off.
From ViroReact 3.1.0
Each scene navigator sends ReactVision one small request, a usage ping, every time it mounts. It tells us which platforms, navigators and ViroReact versions are in use. It replaces the device registration ReactVision Spatial used to do, and it carries no API key. You can turn it off.
When it is sent
One request per mount of ViroARSceneNavigator, Viro3DSceneNavigator, ViroVRSceneNavigator, ViroSceneNavigator, and the web AR, 3D and scene navigators. ViroXRSceneNavigator counts once, whichever navigator it renders, the Quest headset view included.
The request is sent in the background with fetch after the navigator mounts. It is never retried, and a failure is ignored, so it cannot break or slow your scene. JavaScript from 3.1.0 running on an older native binary sends nothing.
What it carries
- A random install id, created on first use and kept in the app's own storage (
NSUserDefaultson iOS and visionOS, a file in the no-backup directory on Android,localStorageon the web), and a random id for the request itself. - The app's bundle id or package name, version and build number. On the web, the page's hostname.
- The platform, OS version and device model. On the web, the OS family and the browser.
- The navigator, the ViroReact and React Native versions, and whether it is a development build.
- Whether
RVApiKeyis set (never the key itself), andRVProjectIdwhen it is set. - A few of the navigator's own settings, such as the anchor provider or the occlusion mode. Never ids, keys, URLs or scene content.
A web page served from localhost, 127.0.0.1, [::1], 0.0.0.0 or a .local host sends nothing.
Privacy manifest (iOS)
The iOS privacy manifest now ships with the pod, as the ViroReact_privacy resource bundle. It declares this data as Device ID, Product Interaction and Other Diagnostic Data, used for analytics, not linked to the user and not used for tracking. Take this into account in your App Store privacy answers.
Turning it off
Use either of these.
Expo plugin option
[
"@reactvision/react-viro",
{
"telemetry": false
}
]
telemetry: false writes ViroTelemetryEnabled = false to Info.plist and the com.reactvision.ViroTelemetryEnabled meta-data with the value false to AndroidManifest.xml. Setting it back to true, or removing it, removes both. Run npx expo prebuild after changing it.
Without Expo, and in a visionOS app's Info.plist, set those keys yourself:
<!-- Info.plist -->
<key>ViroTelemetryEnabled</key>
<false/>
<!-- AndroidManifest.xml, inside <application> -->
<meta-data
android:name="com.reactvision.ViroTelemetryEnabled"
android:value="false" />
From JavaScript
import { ViroTelemetry } from "@reactvision/react-viro";
ViroTelemetry.setEnabled(false); // before the first navigator mounts
This works on every platform, the web included. ViroTelemetry.isEnabled() reports the JavaScript switch only. The native flag is read each time a navigator mounts.
See also
Updated about 3 hours ago