Repository: expo/expo
File: packages/expo-device/src/Device.ts (TypeScript)

Code before:
/**
 * A list of supported processor architecture versions. The device expects the binaries it runs to be compiled for one of these architectures.
 * This value is `null` if the supported architectures could not be determined, particularly on web.
 *
 * @example
 * ```js
 * Device.supportedCpuArchitectures; // ['arm64 v8', 'Intel x86-64h Haswell', 'arm64-v8a', 'armeabi-v7a", 'armeabi']
 * ```
 */
export const supportedCpuArchitectures: string[] | null = ExpoDevice
  ? ExpoDevice.supportedCpuArchitectures
  : null;

/**
 * The name of the OS running on the device.
 *
 * @example
 * ```js
 * Device.osName; // Android: "Android" or fingerprint string; iOS: "iOS" or "iPadOS"; web: "iOS", "Android", "Windows"
 * ```
 *
 * On android this option maps directly to [`android.os.Build.VERSION.BASE_OS`](https://developer.android.com/reference/android/os/Build.VERSION#BASE_OS) which on some devices is set to "Android"
 * and on others is a build fingerprint:
 * - on Xiaomi Poco X3 Pro - `POCO/vayu_eea/vayu:11/RKQ1.200826.002/V12.5.4.0.RJUEUXM:user/release-keys`
 *
 * If you want to differentiate between iOS and Android consider using [`Platform.OS`](https://reactnative.dev/docs/platform#os) from `react-native`.
 */
export const osName: string | null = ExpoDevice ? ExpoDevice.osName : null;

/**
 * The human-readable OS version string. Note that the version string may not always contain three numbers separated by dots.
 *
 * @example
 * ```js
 * Device.osVersion; // Android: "4.0.3"; iOS: "12.3.1"; web: "11.0", "8.1.0"
 * ```
 */
export const osVersion: string | null = ExpoDevice ? ExpoDevice.osVersion : null;

/**
 * The build ID of the OS that more precisely identifies the version of the OS. On Android, this corresponds to `Build.DISPLAY` (not `Build.ID`)
 * and currently is a string as described [here](https://source.android.com/setup/start/build-numbers). On iOS, this corresponds to `kern.osversion`
 * and is the detailed OS version sometimes displayed next to the more human-readable version. On web, this value is always `null`.
 *
 * @example
 * ```js
 * Device.osBuildId; // Android: "PSR1.180720.075"; iOS: "16F203"; web: null
 * ```
 */
export const osBuildId: string | null = ExpoDevice ? ExpoDevice.osBuildId : null;


Review comment (suggestion):
```suggestion
 * If you want to differentiate between Android and iOS, consider using [`Platform.OS`](https://reactnative.dev/docs/platform#os) from `react-native`.
```

See: https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md#platform-order-when-referencing-android-ios-and-web-or-multiple-platforms

Code after:
/**
 * A list of supported processor architecture versions. The device expects the binaries it runs to be compiled for one of these architectures.
 * This value is `null` if the supported architectures could not be determined, particularly on web.
 *
 * @example
 * ```js
 * Device.supportedCpuArchitectures; // ['arm64 v8', 'Intel x86-64h Haswell', 'arm64-v8a', 'armeabi-v7a", 'armeabi']
 * ```
 */
export const supportedCpuArchitectures: string[] | null = ExpoDevice
  ? ExpoDevice.supportedCpuArchitectures
  : null;

/**
 * The name of the OS running on the device.
 *
 * @example
 * ```js
 * Device.osName; // Android: "Android" or fingerprint string; iOS: "iOS" or "iPadOS"; web: "iOS", "Android", "Windows"
 * ```
 *
 * On Android this option maps directly to [`android.os.Build.VERSION.BASE_OS`](https://developer.android.com/reference/android/os/Build.VERSION#BASE_OS) which on some devices is set to "Android"
 * and on others is a build fingerprint.
 *
 * For example on Xiaomi Poco X3 Pro the `Device.osName` is set to `POCO/vayu_eea/vayu:11/RKQ1.200826.002/V12.5.4.0.RJUEUXM:user/release-keys`
 *
 * If you want to differentiate between Android and iOS consider using [`Platform.OS`](https://reactnative.dev/docs/platform#os) from `react-native`.
 */
export const osName: string | null = ExpoDevice ? ExpoDevice.osName : null;

/**
 * The human-readable OS version string. Note that the version string may not always contain three numbers separated by dots.
 *
 * @example
 * ```js
 * Device.osVersion; // Android: "4.0.3"; iOS: "12.3.1"; web: "11.0", "8.1.0"
 * ```
 */
export const osVersion: string | null = ExpoDevice ? ExpoDevice.osVersion : null;

/**
 * The build ID of the OS that more precisely identifies the version of the OS. On Android, this corresponds to `Build.DISPLAY` (not `Build.ID`)
 * and currently is a string as described [here](https://source.android.com/setup/start/build-numbers). On iOS, this corresponds to `kern.osversion`
 * and is the detailed OS version sometimes displayed next to the more human-readable version. On web, this value is always `null`.
 *
 * @example
 * ```js
 * Device.osBuildId; // Android: "PSR1.180720.075"; iOS: "16F203"; web: null
 * ```
 */
export const osBuildId: string | null = ExpoDevice ? ExpoDevice.osBuildId : null;