Keep browser expense records from vanishing

Storing expenses in your browser means no account, no upload and no third party holding your receipts. It also means the browser decides how long your data lives, and browsers are less committed to that data than you are.

Worth understanding properly, because the failure mode is silent.

What actually deletes local data

Storage pressure eviction. When a device runs low on disk, browsers reclaim space from origins holding data. By default your site is “best effort”, which is exactly as reassuring as it sounds.

Seven-day inactivity on iOS. Safari clears local storage for websites you have not visited in about a week. This is the one that catches people out, because it applies to a site working perfectly well the last time they looked. Installing the site to the home screen exempts it.

Clearing browsing data. Any “clear cookies and site data” action takes your expense records with it. Users doing routine privacy housekeeping do not expect to lose an expense log, but they will.

Private browsing. Data written in a private window is discarded when the window closes, and some browsers block persistent storage there entirely.

Three habits that fix it

Install it to your home screen

This is the highest-leverage step, particularly on iOS. An installed web app is treated as something the user deliberately chose to keep, and the inactivity clearing rule no longer applies. On iOS use Share then Add to Home Screen; on Android Chrome, the install prompt in the menu.

Let it request durable storage

Browsers expose a persistence request that promotes storage from best-effort to durable, meaning it will not be cleared under storage pressure without explicit user action. Chrome grants this based on engagement signals like installation and bookmarking. Firefox asks the user. Safari grants it based on its own heuristics.

A well-built local-first app asks for this on first load. You do not need to do anything, but you should know whether it was granted, and an honest app will tell you when it was not.

Export regularly

The habit that makes the other two optional. From My expenses → Export (or Settings → Full backup), download a full device backup JSON. That file includes books, expenses, budgets, and split-bill people/settlements so you can restore on another browser or phone. Receipt photos are not in the file (they would make backups huge) — re-scan if you need images later.

A CSV of the visible list is fine for spreadsheets; it is not a full restore package.

Export before anything meaningful: clearing browser data, changing devices, resetting a phone, or filing a tax return. If you claim these expenses, export at the end of every month and keep the files with your other records. Restore from Settings → Restore when you need the ledger back.

What local-only genuinely cannot do

Be clear-eyed about the trade-off:

  • No sync. Scanning on your phone does not put the expense on your laptop. Two devices, two separate records.
  • No recovery. Lose or wipe the device without an export and the data is gone. There is no support team with a backup.
  • No sharing. You cannot hand a colleague access to a shared expense log.

If you need any of those, you need a server, and you need to accept that your receipts will live on someone else’s computer. That is a legitimate choice, just a different one.

A note on the photos

Receipt images dominate storage. A few hundred bills can run to hundreds of megabytes, which makes eviction under storage pressure more likely, not less. If you are keeping records for tax purposes, the image is often the part that legally matters, so it is worth keeping. If you just want to know what you spent, the extracted total and date are enough and you can decline to store the photo.


Put it into practice

Scan receipt