All posts

February 20, 2026 · 4 min read

Someone Asked You to Delete Their Data. Can Your App Actually Do That?

"Delete my account" is a request almost every app eventually gets, whether or not it's built around a formal privacy law. It's also one of the most commonly half-built features I come across, because the visible part, the account disappearing from the user's own view, is easy to build, and the invisible part, whether the underlying data is actually gone, rarely gets tested the same way.

What 'delete' often actually means

A lot of delete-account buttons do exactly one thing: flip a flag on the user's row so they can no longer log in, and hide their data from the app's own interface. The row itself, along with every related record, orders, messages, uploaded files, activity logs, often stays exactly where it was. From the user's point of view, their account is gone. From the database's point of view, nothing was removed at all.

Why this gap is so easy to miss

Testing 'does delete work' usually means clicking the button and confirming the account can no longer log in, which does work, every time, on the first try. Testing 'is the data actually gone' means going into the database directly afterward and checking whether the records still exist. That's a different test, and it's the one that doesn't get run, because the first test already felt like proof the feature was done.

What a real deletion path actually has to cover

  • Every table that references the user, not just the main users table. A user's orders, comments, uploaded files, and activity logs all need their own answer: deleted, or genuinely anonymized if you have a real reason to keep aggregate history.
  • Any file storage tied to that user, profile pictures, uploaded documents, exports, which lives outside the database and is easy to forget in a deletion routine that only touches database tables.
  • Backups. A live deletion that leaves the same data intact in every backup snapshot for the next 90 days is a partial answer at best, and worth being honest with yourself about rather than treating as solved.
  • Any third-party service you've handed the same data to: an email provider, an analytics tool, a support platform. Deleting your own copy doesn't touch theirs unless you specifically ask them to.

How to actually check your own app

Create a test account, add some real-looking data to it, delete it through your normal flow, then go into the database directly and search for that user's information across every table you can think of. If you find their name, email, or content still sitting there, readable, that's the gap, and it's worth fixing before it's a real user's data rather than a test account's.

This isn't only a legal-compliance checkbox for apps operating somewhere with a specific data-protection law, though it matters there too. It's a basic promise underneath the words 'delete my account': that when someone asks you to let go of their information, your app is actually built to do that, not just to look like it did.

Related reading

Harbova is a security service for apps built with AI tools. Start with a free scan, and if it finds something serious, we can fix it and prove it is closed.