Frontend Transformation Strategy
Migration approach, bridging architecture, and sequencing.
Frontend Transformation Strategy
From Angular Legacy to GlossUI-Driven Experience
We operate a mature B2B wholesale platform with ~392 Angular 14 components and 12,919 UI element instances. This strategy delivers visible improvements to users in weeks by strategically replacing Angular UI surfaces with GlossUI React components.
Key principles:
- UX drives timing. We migrate the screens users struggle with most — first.
- No Frankenstein. Users must never feel like they are switching between two applications.
- GlossUI is the sole design language. Every new surface uses GlossUI.
- Ship continuously. Each migration slice is an independent, reversible deployment.
UX Rules of Engagement
These rules govern every technical decision during the hybrid phase. If a technical approach violates any rule, it is rejected.
Click any rule to see its violation test
Migration Slices
Rather than migrating views by technical complexity, we target the highest user-pain, highest-value journeys first.
Click any slice to expand component swap details
Architecture Evolution
The migration follows a Strangler Fig pattern: new React surfaces wrap and gradually replace legacy Angular views until the legacy shell can be retired entirely.
Zero Angular templates served to users
Navigation Shell
The navigation shell replaces two separate navigation systems (Angular topbar + sidebar, React dashboard nav) with a single React-rendered shell while Angular continues to own the content area routing.
Angular routing unchanged — only the visual shell moves to React
Component Replacement Strategy
Each PrimeNG component is replaced by its GlossUI equivalent in place, following the Strangler Fig pattern. Each phase is individually reversible.
The full component-by-component mapping and readiness status is tracked in the Component Audit.
Status quo. All UI is Angular + PrimeNG. No React involvement in this view.
Same data, same events. GlossUI component replaces PrimeNG in-place via the bridge wrapper. Angular still owns the route.
All components in this view are now GlossUI. The route moves from Angular router to React router.
Legacy code removed. This view is pure React/GlossUI. Repeat for every route.
Phase Sequencing & Dependencies
Three parallel tracks converge at Shell Deployment before migration slice execution begins. The Angular upgrade runs as a parallel infrastructure track, not on the critical path.
Risk Register
| Risk | Severity | Likelihood | Phase | Mitigation |
|---|---|---|---|---|
GlossReactHost bridge has Zone.js interference Zone.js patches async APIs globally. React components inside Angular may trigger unexpected change detection cycles, causing performance degradation or infinite loops. | High | bridge-poc | POC validates isolation patterns first. Fallback: Custom Elements approach. | |
MUI bundle cost makes Angular app too heavy Adding React + GlossUI dependencies to the existing Angular bundle may push initial load times past acceptable thresholds. | Medium | slice-1 | Tree-shake aggressively. Load MUI chunks lazily per route. Monitor bundle size per slice. | |
State bridge introduces race conditions Bidirectional state synchronization between Angular services and React state can produce timing-dependent bugs that are hard to reproduce. | High | bridge-poc | Unidirectional data flow (Angular to React props). React never mutates Angular state directly. | |
Navigation shell breaks Angular routing A React-rendered navigation shell may conflict with Angular Router, breaking deep links and back-button behavior. | High | nav-shell | Angular router untouched — shell only controls the visual chrome. Content area routing unchanged. | |
Visual softening CSS breaks PrimeNG components Global CSS token overrides intended to harmonize the visual theme may interfere with PrimeNG component internals. | Medium | visual-softening | Scoped token overrides only. No !important. Visual QA pass on all 55 views. | |
Team capacity — building GlossUI while migrating The team must simultaneously build new GlossUI components and migrate existing Angular views, creating competing priorities. | High | -- | Prioritize migration-blocking components only. Defer catalog completion. | |
3% test coverage means regressions go unnoticed Extremely low test coverage in the Angular codebase means migration changes can break existing functionality without any automated signal. | High | -- | Add E2E tests for critical paths (order flow, auth, entity CRUD) before migration slices ship. | |
PrimeNG overlay z-index conflicts with GlossUI portals PrimeNG overlays (dropdowns, dialogs, tooltips) and GlossUI portals may fight for z-index supremacy, causing visual layering bugs. | Medium | slice-1 | GlossUI portals render to document.body at z-index 9000+. PrimeNG overlays stay below. |