Work

AngularJS to Angular Migration

Dev
Frontend
Angular

Seven modules off end-of-life AngularJS over 18 months, both frameworks live behind a bridge so feature delivery never paused.

Incremental AngularJS to Angular migration with both frameworks running side by side Month 0 7 legacy modules AngularJS 1.x end of life 2021 Months 1 – 18 · both live migrated modules bridge layer remaining legacy Month 18 all 7 on Angular bridge removed dependency gone Why incremental rather than a rewrite A big-bang rewrite would have frozen feature delivery for the whole period. Running both frameworks in one page costs a bridge layer and a heavier bundle while the migration is in flight — a deliberate trade for continuous shipping. The bridge was deleted once the last module moved.

Retiring an end-of-life framework without pausing delivery

AngularJS reached end of life in 2021 while seven DataChain modules still depended on it. I planned and carried out the migration to Angular over 18 months, with the product shipping features throughout.

The constraint

A framework past end of life is an accumulating security and hiring liability — and for a platform sold into pharmaceutical and public-sector customers, an unsupported dependency is a question you get asked in procurement. It had to go.

But a big-bang rewrite would have frozen feature delivery for the whole period, which is not an acceptable trade for a product with paying customers.

The decision

Migrate incrementally, one module at a time, with both frameworks running in the same page behind a bridge layer. Each module could be moved, released and verified on its own, and the work could be paused whenever feature delivery needed the capacity — which it did, more than once.

The trade-off

Running two frameworks side by side means a heavier bundle and a bridge layer that is itself code to maintain, for a year and a half. That was the deliberate price of never stopping delivery. The bridge was deleted once the last module moved.

Outcome

All seven modules run on Angular and the AngularJS dependency is gone. The migration rode on the Nx monorepo structure, which is what made module-by-module movement practical rather than theoretical.