In this show, Stephen and Chris get to talk about an internal technical detail we were improving in our database, which led to a public-facing feature for y’all. The idea is that all (most, anyway) database tables should have a deleted_at column. When you query against them, under regular circumstances, any rows that have a non-null value will be filtered out. This is the concept of “soft” delete. It’s not really gone from the database, it just behaves like it is. This has two clear benefits:

  1. Deleting is super fast, it’s just manipulating a single value.
  2. It opens the door for un-deleting things that perhaps were mistakenly deleted.

This approach can be slightly more work. You’ll need to offer a way to truly wipe data completely for users. You’ll probably want a reaper to clean up data that has been deleted long enough. You’ll need to comply with regulations about data deletion. You might have to build un-deletion features. You might need to be doing that filtering yourself throughout the app. It’s work, but it’s generally worth it.

In our case, because we soft delete everything on CodePen now, the Deleted Items area of Your Work now works for all Item Types (Pens, Collections, and Projects). Before, it only worked for Pens, and even there it was a little messy as it didn’t retain the URL slug or comments and such — now it does.

Time Jumps

  • 00:14 Welcome
  • 00:56 Bulk delete and now soft delete
  • 03:56 Delete regret
  • 05:01 Logging what happened
  • 05:24 Sponsor: Memberful
  • 07:17 Instead of deleting in the database, what we do is…
  • 13:33 Concerns with deleting data
  • 15:03 API work and cleanup
  • 18:48 What is soft delete?

Sponsor: Memberful

Memberful is a best-in-class membership software used by the web’s biggest creators. If you’re building a membership website for a client, Memberful handles the hard stuff so you can complete your builds quickly and your clients can focus on creating content while earning revenue with ease. It seamlessly integrates with popular tools like WordPress, Mailchimp, and Discord, so they can reach and monetize their existing audience. Memberful maintains GraphQL API, webhooks, and OAuth Single Sign on to make integration even easier.

Help your client monetize their passion. Get started for free at