Skip to main content
Question

Risk of Users Losing Entitlements When Using Anonymous IDs in RevenueCat

  • November 3, 2025
  • 1 reply
  • 24 views

Forum|alt.badge.img

My Kotlin Multiplatform app (iOS and Android) does not use any form of user authentication or account system, it relies entirely on Google Play Billing and App Store for entitlements. After integrating RevenueCat, I’m using the default anonymous user IDs that are automatically generated on each device install.

My concern is whether this setup introduces a risk of users losing access to their entitlements under any of the following scenarios:

  • The app is uninstalled and reinstalled.

  • The user switches devices (but uses the same Google Play/Apple ID).

  • The app data is cleared or restored via backup.

  • The anonymous ID changes for any reason.

Since RevenueCat identifies users by this anonymous ID, and my app has no backend or custom user IDs, it seems that if a user’s anonymous ID changes, they could lose their entitlement records unless RevenueCat re-syncs their purchases from Google Play.

Questions:

  1. Is it safe to rely solely on anonymous IDs when my app depends on RevenueCat for entitlement restoration?

  2. If an anonymous ID changes, will restorePurchases() or syncPurchases() automatically re-link the user’s Google Play/Apple purchases to the new anonymous ID?

  3. Are there recommended best practices for apps that have no login system but want to preserve RevenueCat entitlements reliably across reinstalls or new devices?

Looking for guidance on whether I should be implementing any additional safeguards or user flow changes to prevent entitlement loss in this kind of setup.

This post has been closed for comments

1 reply

Forum|alt.badge.img+8
  • RevenueCat Staff
  • November 5, 2025

Hi, purchases are stored on the user’s receipt that belongs to the underlying store account, i.e. Apple/Google Play account, so as long as the user is logged in with the same account when they uninstall/reinstall, switch devices, etc. they will be able to regain access to their purchases via restorePurchases() or syncPurchases(). One caveat with using anonymous app user ids is that consumables and non-renewing subscriptions cannot be restored as they are not saved on the underlying store receipt, see our docs here: https://www.revenuecat.com/docs/getting-started/restoring-purchases#restoring-purchases-for-consumables-and-non-renewing-subscriptions

To ensure purchases can be restored you can call syncPurchases() after the first time configure() is called and also make sure to have the restorePurchases() button.