The Framework Decision That Changed Our Agency

When we started Nexora in 2024, we had a simple mandate: build the fastest, most scalable websites possible for our clients. After evaluating every major framework — Gatsby, Remix, Astro, SvelteKit, and yes, vanilla React — we landed on Next.js. Here's the honest breakdown.

1. App Router + Server Components = Zero JavaScript by Default

The App Router introduced React Server Components (RSC) to production Next.js. What this means in practice: every component is server-rendered by default. Only components you explicitly mark with "use client" ship JavaScript to the browser.

For a typical agency marketing site, this means your hero, about, services, and testimonials sections ship zero JavaScript. The result? A Time to Interactive (TTI) measured in milliseconds, not seconds.

tsx
// This ships ZERO JavaScript to the client
export function ServicesSection() {
  return (
    <section>
      <h2>Our Services</h2>
      {services.map(s => <ServiceCard key={s.id} {...s} />)}
    </section>
  );
}

2. Built-in Image Optimization with next/image

Cloudinary is great. But next/image gives you automatic WebP/AVIF conversion, lazy loading, blur placeholders, and responsive srcsets — for free, with zero config. For clients with image-heavy portfolios, this alone can cut page weight by 60%.

3. TypeScript + Tailwind Tight Integration

Next.js ships with TypeScript support out of the box. Combined with Tailwind CSS v4's new CSS-first config system, you get a design system that's both type-safe and runtime-free. No className string bugs. No unused CSS shipped.

4. Turbopack in Development

In Next.js 15, Turbopack became the default dev bundler. Hot reload times dropped from ~800ms (Webpack) to under 80ms for our largest codebases. For agency dev workflows where you're iterating on component designs in real time, this is a game changer.

5. Edge Runtime for Global Performance

Next.js Middleware and Route Handlers can run on Vercel's Edge Network — 300+ PoPs globally. For clients with international audiences, this means sub-50ms TTFB anywhere in the world, without a CDN setup.

The Numbers From Our Client Work

After standardizing on Next.js across all 50+ projects:

  • Average Lighthouse Performance: 96/100
  • Average Time to Interactive: 1.1 seconds (mobile, 4G)
  • Average Largest Contentful Paint: 0.9 seconds

If you're an agency not already on Next.js, the migration is worth the effort. Your clients will notice the difference immediately.