Skip to content

Anonymous user transition

Basic idea

  • Locally choose a unique identifier for the user (e.g. via crypto.randomUUID()).
    • You might want to handle the very unlikely case that the identifier is not unique (collision) on the sync backend.
  • Persist this identifier locally (either via a separate LiveStore instance or via localStorage).
  • Use this identifier in the storeId for the user-related LiveStore instance.
    • Initially when the user is anonymous, the store won’t be synced yet (i.e. no sync backend used in adapter).
    • As part of the auth flow, the LiveStore instance is now synced with the same storeId to a sync backend which will sync all local events to the sync backend making sure the user keeps all their data.