UX Security SaaS Product Design Frontend

Migrating Legacy Enterprise UI To React: The Case Against The Rewrite

A security platform's AngularJS frontend doesn't need a rebuild. It needs a seam, a plan, and the discipline not to stop shipping.

Tony Caraballo ·

Every product team with an aging frontend eventually has the same meeting. Someone proposes a full rewrite. Someone else points out the last full rewrite took eighteen months and shipped nothing new in the meantime.

Both of them are right to worry. An unmaintained framework is a real liability. A stalled rewrite is a bigger one.

Where The Rewrite Instinct Comes From

Old UI code accumulates a specific kind of shame. Engineers know which files nobody wants to touch, and product leaders know which screens look dated next to a competitor’s demo.

That discomfort pushes teams toward a clean slate. Freeze features, rebuild the whole frontend in React, cut over on launch day. It feels like the only way to get out from under the debt at once.

It also assumes the team can predict a multi-quarter project perfectly, with no scope change and no shift in business priority. Most can’t.

What End-Of-Life Frameworks Actually Cost

The risk isn’t hypothetical anymore. AngularJS reached end-of-life in December 2021, and the CVEs haven’t stopped since.

HeroDevs, a vendor that researches and patches end-of-life frameworks, discovered a new high-severity cross-site scripting flaw in AngularJS’s core sanitization service this year, one no one else had found. Its write-up on CVE-2026-11998 notes that AngularJS no longer gets community security maintenance, so organizations are left to find and patch flaws themselves.

Modern Angular isn’t immune either. HeroDevs counted 21 Angular security advisories in 2026 alone, 15 of them in a single two-week stretch in late May and June. Fixes shipped only to currently supported versions. Their download data for that week showed nearly half of all @angular/core installs still running version 19 or earlier.

For a security vendor, that exposure isn’t only a security story. It’s a compliance one. Frameworks like SOC 2, GDPR, and NIS2 expect known vulnerabilities to get patched on a reasonable timeline, something end-of-life software structurally cannot do.

Why The Big-Bang Rewrite Usually Loses

Thoughtworks has watched this pattern across years of AngularJS migration work, and its guidance is blunt: a full rewrite is generally an antipattern, reserved for small, low-stakes codebases with no real user base to protect.

Its retrospective on the AngularJS exodus walks through two contrasting approaches. A German real estate platform moved a high-traffic listings page from AngularJS to React gradually, A/B testing each release over six months without moving core KPIs. A US airline took the opposite path on a small, low-risk internal tool, froze it, and rebuilt it outright with a ten-person team.

The difference wasn’t ambition. It was exposure. The airline could afford to go dark because almost nothing depended on that app yet. The real estate platform couldn’t, so it never stopped shipping while the migration ran underneath.

A security product carries the real estate platform’s exposure, not the airline’s. Analysts are in the dashboard every shift. A frozen quarter isn’t a quiet pause; it’s a competitor’s opening.

The Strangler Pattern Applied To A Dashboard

The alternative has a name: the strangler fig pattern, coined by Martin Fowler. A new system grows around the edges of the old one, screen by screen, until nothing of the original remains.

Applied to a security product, that usually starts with the loudest screen, not the oldest code. Pick whichever view analysts complain about most, often the alert queue or a reporting page. Rebuild that one first in React, behind a routing layer that still serves everything else from the legacy app.

Each slice ships independently. Each one is small enough to test, roll back, and defend in a sprint review. That matters because a project that can stop safely at any point is a project leadership can actually keep funding.

The hard part isn’t the code split. It’s keeping the two frontends from feeling like two different products while they coexist. A shared design system, even a thin one covering only color, type, and the core interactive components, keeps an analyst from relearning the interface every time a screen gets rebuilt.

Modernization Doesn’t End

Teams sometimes treat a migration as a project with a finish line. It isn’t one, even after the legacy framework is gone.

Thoughtworks’ April 2026 Technology Radar flags exactly this pattern one layer up the stack. Teams using Module Federation for micro-frontends are being pushed toward a new meta-framework, because the plugin they’d standardized on is being phased out. Its CI tests are expected to disappear by mid-to-late 2026. Even teams that already modernized are migrating again.

That’s the real shape of frontend ownership in a security product. Not one rewrite that ends the problem, but a standing practice of replacing the piece that’s gone stale before it becomes the piece nobody can touch.

A platform that treats modernization as continuous maintenance never needs the eighteen-month freeze. It keeps the seam open and moves one screen at a time.


The Caraballo Group helps security SaaS teams migrate legacy frontends without freezing the roadmap, screen by screen, behind a design system that keeps the old and new UI from feeling like different products. Book a call to talk through where your seam should go.

Photo by Growtika on Unsplash.