← Devlog

April 05, 2026 · 189 views

Zero-downtime deploys and a TypeScript migration, without scaring prod

Migrating a live product to TypeScript while shipping every week.

Two things product teams hate hearing: "the site will be down for maintenance" and "we're rewriting it in TypeScript". I needed to do both, on a live government platform, without a scary weekend. For deploys, I set up zero-downtime releases on Azure Static Web Apps with GitHub Actions. Every push runs the pipeline, builds, and swaps in the new version cleanly — users never hit a broken in-between state. No maintenance banner, no held breath. The TypeScript migration was the trickier one, because you can't stop shipping features for a month while you convert everything. So I did it gradually — file by file, module by module, with types getting stricter as I went. The build stayed green the whole time. Any pull request that broke types just... didn't merge, because the pipeline caught it. The nice part is that the two efforts fed each other. TypeScript caught mistakes before they reached the deploy, and the automated deploys meant every small, safe change went out quickly instead of piling up into one giant risky release. Big migrations feel impossible when you picture doing them all at once. They're very doable when you slice them thin and let the robots guard the door.