The Device ID should be unique enough to exclusively identify a device/client and shouldn't get lost if the app updates.
=== Windows ===
For This information applies both to the UWP / XAMARIN WinX client as well as the unreleased Xamarin.UWPclient:
In the UWP/WinX clientuntil version 3.7.x, the device id 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. (<= 3This ID is relatively consistent but can change when e.7g. a docking station with a network card is attached.X)
The {{Version/WinXSince|3.8}}Starting with UWP 3.8, the [https://docs.microsoft.com/en-us/uwp/api/windows.system.profile.systemidentification?view=winrt-19041 .getsystemidforpublisher SystemIdentification.GetSystemIdForPublisher() ]Method returns method is used to return a unique system identifier based on the app publisher ID.The ID is generated either using a Trusted Platform Module (TPM), if present, or a Unified Extensible Firmware Interface (UEFI) if present.
If 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 ASHWID identifier is used. (>= 3.8.X)
=== Android ===