Telemetry

NativeVision collects completely anonymous telemetry data about general usage. Participation in this anonymous program is optional, and you may opt-out if you'd not like to share any information.

Why is telemetry collected?

NativeVision has a small team of engineers and we want to prioritize the issues that are impeding production usage of the library. There is a lot of ground to cover between the supported iOS and Android devices, versions of Expo, React Native, and more. This information will give us more context to help diagnose

For example, NativeVision uses the library in the test application viro-test-bed to fix issues and develop the library. We also actively engage with the community to gather feedback.

However, this approach only allows us to collect feedback from a subset of users. This subset may have different needs and use cases than you. Telemetry allows us to accurately gauge NativeVision feature usage, pain points, and customization across all users.

This data will let us better tailor NativeVision to the masses, ensuring its continued growth, relevance, and best-in-class developer experience. Furthermore, this will allow us to verify if improvements made to the framework are improving the baseline of all applications.

What is being collected?

The information being collected can be found here . We will collect more error messages and configuration data in the future and will update this page accordingly.

const traits = {
  // expo
  isExpo:
  // @ts-ignore
  Boolean(window?.expo) || false,
  sdkVersion:
  // @ts-ignore
  window?.expo?.modules?.ExponentConstants?.sdkVersion || undefined,
  androidPackage:
  // @ts-ignore
  window?.expo?.modules?.ExponentConstants?.android?.package ||
  undefined,
  iosBundleIdentifier:
  // @ts-ignore
  window?.expo?.modules?.ExponentConstants?.ios?.bundleIdentifier ||
  undefined,
  expoDebugMode:
  // @ts-ignore
  window?.expo?.modules?.ExponentConstants?.debugMode || undefined,
  isDevice:
  // @ts-ignore
  window?.expo?.modules?.ExponentConstants?.isDevice || undefined,
  // library version
  viroVersion: VIRO_VERSION,
  platform: Platform.OS,
  deviceOsVersion: Platform.Version,
  reactNativeVersion:
  Platform.constants.reactNativeVersion.major +
  "." +
  Platform.constants.reactNativeVersion.minor +
  "." +
  Platform.constants.reactNativeVersion.patch,
};

Note: This list is regularly audited to ensure its accuracy.

Opting Out

Opt out by calling the opt-out function defined in components/Telemetry/index.ts found here. Execute this call BEFORE initializing any SceneNavigator components. We recommend doing it at the import level in an App.tsx file:

import {ViroTelemetry} from '@viro-community/viro-react';

ViroTelemetry.optOutTelemetry();

Debug

Turn debugging on by calling the debug mode function defined in components/Telemetry/index.ts found here.

import {ViroTelemetry} from '@viro-community/viro-react';

ViroTelemetry.optOutTelemetry();