The short answer
Storage in the browser is convenient and unreliable. It is per device, per browser, and can vanish when someone clears their data, uses private browsing or switches device.
Choose based on consequence: convenience locally, accounts for anything that matters.
What each option gives you
| Approach | Survives | Cost |
|---|---|---|
| Browser storage | Same device and browser only | Nothing |
| Storage plus a share code | Manual transfer between devices | Small |
| Anonymous account | Devices, if they keep the link | Moderate |
| Full account | Everything | Higher, plus obligations |
| Nothing saved | Each session stands alone | Nothing |
The bottom row is a legitimate choice for a short campaign game and removes an entire category of problems.
Handle storage failing
- Wrap every access, because it can throw rather than return empty.
- Work correctly when nothing is stored.
- Do not assume what you saved is still there.
- Handle a full quota without breaking the game.
- Never show an error about storage to the player.
Private browsing and restricted settings both produce errors rather than empty values, and an unhandled one breaks the game on load.
Be clear with players
If progress is saved only on that device, say so before they invest hours. Discovering it after switching phone is a bad experience nobody forgets.
Where you offer a way to transfer progress, make it findable before it is needed rather than only in a settings menu.
Accounts bring obligations
- Personal data to protect and to delete on request
- Recovery for people who lose access
- Age considerations if children play
- Support when something goes wrong
- A commitment to keep running the service
For a short campaign game those obligations rarely justify themselves. For a product people return to, they usually do.