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

  1. Prioritized high-traffic routes first and shipped each migration behind controlled rollout flags.
  2. Pushed client boundaries lower in the tree so interactive logic stayed isolated and intentional.
  3. 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.