Self-service account deactivation: why it’s harder than you would think

Fly.io runs apps close to users, by transmuting Docker containers into micro-VMs that run on our own hardware around the world. This is a post about deactivating accounts on Fly.io, but if you're new, you might like to try us out first; you can be up and running in just a couple of minutes.

We've just introduced a self-service UI for deleting your Fly.io account.

From time to time people ask us to deactivate their account. It happens! Maybe you just tried a walkthrough out of interest, or you created a new account with a different name, or (snif) you're moving your app to (snif) another platform. Whatever the case, until recently, to get your account deactivated, you had to email support.

Why was this? At first glance it seems simple. Just build a self-service "delete everything" button. However, to bring this feature to life, we need to consider Factors. Users share organizations, and have apps running. You need to understand what you're doing, and then make a decision, and our account deletion features need to help you with that.

It comes down to this: if we're not careful, the easier we make it to deactivate your account, the easier we make it to accidentally destroy a bunch of infrastructure in one dumb click. We're determined not to fall into that trap.

Let's look at what we came up with:

First, we need to delete your apps. Once your account is deleted, these apps are gone; you can't go back and fix things. We want to make sure you're not accidentally abandoning anything important. Also, we allocate resources to each app you own, so if you're breaking up with us, we'll take our volume storage space, mix tapes, and favorite sweater back.

It gets trickier. If you're migrating to (snif) another provider, there's more homework to take care of. When you point a domain to a Fly.io app you'll have configured certificates, and when leaving you probably need to change some DNS records.

Finally, in your time here you might've created an organization, and then invited friends (please do). So you're an admin of shared apps now. Given you're the admin, you probably want to either delete your organization or transfer it to someone else, so we will carefully remind you of that before leaving.

With all this in mind, we built a UI to guide you through these steps without having to look it all up in documentation. Following the links should bring you to the right page for each task.

Deactivation UI showing no organization-related problems and links for deleting existing apps and certificates

Whether you're just tearing down a test account or migrating an app off out platform, this should be all you need. Most of the time, you probably only have to delete an app or two, and then you're good to go.

That being said, there are still some cases where we can't automatically deactivate your account. If you're sharing organizations or are the admin of someone else's organizations, we can't automatically zap your account. At least for now, you will need a little help to get going in this case. The UI will let you know if it detects that you would just get stuck on the organization step.

Deactivation UI indicating to contact us due to organization needing manual intervention before account can be deactivated

If you're excited about this new feature, we want to hear from you about how we can make Fly.io the platform you're excited to try again in the near future. Reach out at our community forum.