← All posts
Writing Migrations You Can Roll Back
A migration without a tested down path is a one-way door. We treat reversibility as a requirement, not a nicety.
Every migration we write has a tested down. If you can't roll it back, you can't deploy it on a Friday — and we deploy on Fridays.
The rule
- Additive first: new columns are nullable, new tables are independent.
- Never drop in the same migration that stops writing — split across deploys.
- Test the down path in CI against a seeded database.
A migration you can't reverse is an outage you can't undo.
More to read