← Back to Blog
Feb 28, 2026 · 5 min read

Why We Chose Astro Over Next.js for Client Portfolios

When a client asks us to build a marketing site or portfolio, our default answer used to be Next.js. It's what we know, it's battle-tested, and it handles everything from static pages to full-stack apps. But in 2026, we switched our default for content-heavy sites to Astro — and the results speak for themselves.

The Problem with Next.js for Simple Sites

Next.js is incredible for web applications. But for a 5-page marketing site? You're shipping a React runtime, hydration logic, and a client-side router to render what is essentially static HTML. The result: bundle sizes of 80-150KB of JavaScript for pages that don't need any interactivity.

Astro's Zero-JS Default

Astro ships zero JavaScript by default. Your pages are pre-rendered to static HTML at build time. If a component needs interactivity — a mobile menu toggle, a form validator — Astro's "island architecture" lets you hydrate just that component while keeping everything else static.

The practical impact: our client portfolio sites went from 85-95 Lighthouse scores with Next.js to consistent 98-100 scores with Astro. Load times dropped from 1.5-2s to under 800ms.

When We Still Use Next.js

Astro isn't a replacement for Next.js — it's a complement. For applications with authentication, real-time data, complex state management, or server-side logic, Next.js (or React + Vite) is still our go-to. The key insight is matching the tool to the job:

  • Content sites, blogs, portfolios: Astro
  • Web applications, dashboards, SaaS: Next.js or React + Vite
  • Hybrid (marketing + app): Astro for marketing pages, separate React app for the product

The Bottom Line

For our clients building marketing sites, landing pages, and portfolios, Astro delivers faster load times, better SEO, and lower hosting costs — without sacrificing developer experience. It's not about the newest framework; it's about using the right tool for each job.