Skip to content

Work

2024–2025NDA

Migrating a long-lived frontend without stopping the product

An ageing stack had to be replaced underneath a live product that could not be switched off for a day.

Client under NDA. The problem, the approach and the stack are published; the name and the assets are not.

Role

  • Audit
  • Migration architecture
  • Development

Stack

  • Next.js
  • TypeScript

Page by page, not a full rewrite

Rewriting everything and shipping it in one release would have meant months without a single delivery, followed by one day on which everything breaks at once. Instead the old and new applications ran side by side behind a shared router for a while, and pages moved over one at a time, starting with the least entangled. The price is a period during which two stacks live in the project at once, and that period had to be bounded by an explicit deadline — otherwise it becomes the permanent state.

URLs survived the move

The product had accumulated search history, and changing its addresses would have devalued that faster than anything in the code itself. The URL structure was preserved wherever possible, and where it could not be, the move is covered by permanent redirects written before the release rather than after the first losses. It is the dullest part of a migration and the only one whose mistakes are not noticed immediately.

  • Migration
  • Legacy
  • Incremental rollout