Back to workCase study
React SPA to Next.js App Router
Migrated a mature React SPA to Next.js App Router to improve performance, simplify data flow, and reduce long-term delivery risk.
- Next.js 16
- React
- TypeScript
- GraphQL
- AWS
- CI/CD
Context
The SPA had reached a point where route complexity and bundle size were slowing feature delivery.
Performance work needed architectural change, not isolated micro-optimizations.
The business required safe incremental migration with rollback paths at each stage.
Approach
- Prioritized high-traffic routes first and shipped each migration behind controlled rollout flags.
- Pushed client boundaries lower in the tree so interactive logic stayed isolated and intentional.
- Co-located data fetching with route-level rendering and adopted cache-safe fetch patterns.
Outcomes
- Improved Core Web Vitals on key routes and reduced client JavaScript payload.
- Made route data flow easier to reason about and maintain.
- Reduced migration risk by delivering in small, testable increments.