Changes
The Device ID should be unique enough to exclusively identify a device/client and shouldn't get lost if the app updates.
=== Windows ===
In the UWP/WinX client, the device id is created using the [https://docs.microsoft.com/en-us/uwp/api/windows.system.profile.hardwareidentification.getpackagespecifictoken ASHWID identifier] encoded to a Base64 string.(<= 3.7.X) The SystemIdentification.GetSystemIdForPublisher() Method returns a unique system identifier based on the app publisher IDThe ID is generated either using a Trusted Platform Module (TPM), if present, or a Unified Extensible Firmware Interface (UEFI) if presentIf neither of these sources is available, this method will return an ID that is backed by the Windows registry.If a system does not have a TPM or UEFI support, and thus an ID was obtained from the registry, a clean install of Windows will result in a new, different ID being returned. If no ID could be generated, the old ASHWIND identifier is used. (>= 3.8.X)
=== Android ===
On the native Android client, the [https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID ANDROID_ID (SSAID)] is accessed. Before Android 8, this ID was bound to a device for its lifetime. Since Android 8, the ID is different for every user (if the device has the multi-user feature enabled) and when the device is reset.