.NET 4.6.2 → .NET 8 + React Modernization
Tech: .NET 8, React, Identity, SQL Server, Azure
Context: A large hybrid WebForms/MVC system that had become expensive to change. The constraint was not the target architecture — it was that the business would not accept a freeze, so whatever replaced it had to run beside it.
Approach: Strangler fig, domain by domain rather than layer by layer, so each step shipped something a user could reach instead of a half-finished tier. Authentication moved first and was shared by both stacks, because two login systems running concurrently is the failure that ends this kind of migration. React rolled out behind the same routes the old pages served, which let a domain be switched and switched back without a deploy of the other stack.
What it cost: Two front ends in production at once means two build pipelines, two sets of dependencies to patch, and a period where a developer has to know both. The strangler pattern does not remove that cost, it spreads it — and the migration only ends if the last domain actually gets moved, which is the step that tends to be abandoned once the painful ones are done and the remaining pages still work.