I have a fairly popular app that stores data in IndexedDB. Luckily it's a free app and the data is not critical, so it's not too bad when users lose their data.<p>How do they lose their data? Three ways, mostly:<p>1. They clear their browser cache, including data in IndexedDB, without realizing that will delete data from my app.<p>2. Some internal browser error. An error message pops up somewhere, they reload the page, and all the data is gone.<p>3. The browser intentionally deletes it because of a quota. In the old days, this was a theoretical concern - allowed by the spec, but browsers never did it. These days, it is a real thing that happens.<p>Something that helps a bit is the persistent storage API <a href="https://web.dev/persistent-storage/" rel="nofollow">https://web.dev/persistent-storage/</a> but it's not ideal. Last I did a deep dive (like a year ago) it was not supported at all in Safari, and it was weird in Chrome (the browser would not allow the user to enable persistent storage unless the user had spent some unspecified about of time/activity on the website first).<p>My point is, overall it's kind of shitty. The data is local, but users are not in control. The browser is in control, and browsers these days seem to almost have contempt for users. The idea that users can manage their own data - preposterous, we must do it automatically in the background and give the user no control!<p>It's good enough for my app, but I would not want to put my budget data in IndexedDB.<p>(That being said, I do appreciate your blog post, and your architecture sounds pretty cool!)