Rebuilding the plane mid-flight.
A framework for migrating a large enterprise Angular application incrementally — with an extraction graph, automated component mapping, and a parity system that proves each migrated screen behaves identically.
01Problem
"Big-bang rewrite" and "never migrate" are both ways of failing — one loudly, one slowly. The codebase was too large to freeze and too entangled to move screen by screen without knowing what each screen actually depended on.
02Approach
- Extraction graph. Static analysis over the legacy codebase builds a dependency graph — components, services, state, templates — so migration order is computed from coupling, not guessed from opinions.
- Component mapping. Each legacy component maps to its design-system target with a confidence score; high-confidence mappings are codemodded, low-confidence ones are queued for humans.
- Verification pipeline. Every migrated screen runs behavioural tests plus visual diffs against its legacy twin in CI.
- Parity ledger. A live dashboard of what's migrated, what's proven equivalent, and what's intentionally different — the single artifact that kept stakeholders calm.
03Impact
0
Release freezes during migration
Graph-ordered
Migration sequence, not guesswork
Proven
Behavioural parity per screen, in CI
04Lessons
Migrations are evidence problems. The moment parity became something CI proved rather than something engineers promised, the migration stopped being scary — and therefore stopped being slow.