AEO / SEO

Astro vs Next.js for SaaS marketing sites in 2026

An honest comparison of Astro 5 and Next.js 16 for B2B SaaS marketing sites. Performance, AEO, dev velocity, hosting cost, and which fits when. Spoiler: it's not as close as the benchmarks suggest.

— TL;DR

Pick Astro for marketing sites that are mostly static content and need the absolute best AEO posture. Pick Next.js when you're shipping a product app on the same stack and value React's shared mental model over the last 20 Lighthouse points. The benchmarks understate the real gap.

If you're a B2B SaaS team picking a stack for a marketing site in 2026, two frameworks dominate the practical conversation: Astro 5 and Next.js 16. Both are mature, both have great DX, both have first-class hosting on Vercel and Cloudflare. The differences underneath that surface determine which one fits your team. And they're more substantial than the benchmark numbers suggest.

This piece is the honest comparison. It's based on shipping both stacks for B2B SaaS clients in 2024–2026. By the end you'll know which to pick for your specific situation.

#TL;DR

  • Pick Astro if: the marketing site is mostly static content, you want the absolute best AEO posture, you don't share components with a product app, your team is comfortable with a non-React framework for the marketing surface.
  • Pick Next.js if: you're building a product app on Next anyway, you want the same stack for marketing and product, your marketing site has interactive demos or app-flavored features, you value React shared mental model over the last 20 Lighthouse points.

If you're not sure, default to Next.js. The AEO-cost is real but small; the team-velocity benefit of one stack is substantial.

#The big architectural difference

Astro and Next.js look similar from a project-structure standpoint. Both have a src/app or src/pages layout, both support MDX, both serve content from a content directory. Underneath, they're shaped fundamentally differently.

#Astro's "Islands" model

Astro renders your entire page to static HTML at build time (or request time, your choice). Components are written in .astro files, which are HTML-with-frontmatter. No JavaScript ships unless you opt in. When you do need interactivity, you wrap a component (React, Vue, Svelte, anything) in a client:load, client:idle, or client:visible directive. That single component "island" gets its JS bundle; the rest of the page stays static.

The result: a typical Astro marketing site ships 0–20KB of JavaScript total. Even a content-rich page with three or four interactive widgets stays under 50KB.

#Next.js 16's RSC + App Router model

Next.js 16 with the App Router uses React Server Components (RSC) by default. Pages are React components. You write them once, and Next decides whether to render them on the server (zero JS shipped) or hydrate them on the client (full React runtime).

The catch: Next.js ships ~85KB of JavaScript minimum even on a fully-static RSC page. That's the App Router runtime, the streaming infrastructure, and React's hydration glue. It's not configurable; it ships even if your page does nothing.

For interactive parts, Next.js is comparable to Astro. Both ship roughly the same React + Motion + theme-toggle bundle when you actually need those. The gap is in the static baseline.

#Performance head-to-head

Real numbers from a typical B2B SaaS marketing site (home + 10 service/blog pages, served from Vercel's edge):

MetricAstro 5Next.js 16
Lighthouse Performance (home)10095–98
TTFB (cold)80–150ms100–200ms
LCP (75th percentile)0.8–1.2s1.4–2.1s
Total JS shipped (home)0–8KB85–110KB
Build time (50 pages)18–28s35–60s
Hot reload (dev)50–150ms200–400ms

Astro wins on every metric. The honest question is how much that matters to your specific situation.

For pure marketing sites read by humans on broadband, the user-facing difference is small. Both feel fast. For users on slow networks (3G, rural, throttled enterprise wifi), Astro feels noticeably snappier. For AI crawlers, which timeout aggressively and de-prioritize slow pages, Astro has a measurable AEO advantage.

#AEO posture

In 2026, the AEO question is the load-bearing one for many B2B SaaS sites. Here's how the two compare on what matters for AI search citation.

#Schema markup

Both stacks support arbitrary JSON-LD via <script type="application/ld+json">. No difference here.

#Server-rendered HTML

Astro: 100% of content ships as server-rendered HTML by default. AI crawlers see everything immediately.

Next.js (App Router with RSC): mostly server-rendered, but Suspense boundaries and 'use client' components can introduce content that arrives after the initial HTML. AI crawlers may or may not wait for it. The fix: avoid 'use client' for any content that should be indexed; lazy-load only progressive enhancements.

#llms.txt generation

Both generate dynamically at request time. Astro endpoints (src/pages/llms.txt.ts) and Next.js route handlers (src/app/llms.txt/route.ts) both work the same way. No advantage.

#Page weight and crawl budget

This is where Astro wins. AI crawlers have aggressive timeouts (often 2–4 seconds). A page that ships 100KB+ of JavaScript and waits for hydration before the meaningful content paints is more likely to be partially indexed or skipped entirely. Astro's zero-JS baseline guarantees full content reaches the crawler.

#prefers-reduced-motion, accessibility, viewport

Both are equivalent. Neither has a structural advantage for accessibility-driven AEO signals.

#Developer experience

The DX comparison depends heavily on what your team knows.

#Content-first DX (Astro wins)

If your marketing site is mostly content (blog, services, case studies, docs) Astro's content collections + MDX integration is the best in class. Type-safe frontmatter via Zod, automatic slug generation, MDX-by-default, no special config. You write content like you'd write blog posts and the framework just handles routing and metadata.

Next.js can do the same with next-mdx-remote or Contentlayer, but it's more setup and the typing isn't as tight.

#React-first DX (Next.js wins)

If your team lives in React all day, Next.js's .tsx files are home turf. You import React components, you reuse them across pages, you share types across your monorepo with the product app. The Astro .astro syntax is a small but real context-switch cost. It looks like HTML but has special directives, and your linter/formatter needs separate config.

#Hot reload speed

Astro's dev server is meaningfully faster (50–150ms hot reload vs 200–400ms for Next.js). On a long writing session, this compounds. Astro feels snappier when you're iterating on content.

#Error messages

Next.js has the better error messages in 2026, by a wide margin. The Turbopack-powered dev overlay is excellent. Astro's errors have improved a lot but still occasionally bottom out at "TypeError in renderer" without a useful stack trace.

#Hosting and cost

Both run anywhere; both have first-class Vercel deployment.

Hosting concernAstroNext.js
Vercel Free tier coverageGenerous (static ISR cheap)Generous, but server functions add up
Cloudflare PagesNative, fastWorks, but Edge runtime needed for SSR
Bandwidth at scale~30–50% lessMore, due to JS bundle
Cold-start costNone (static)200–500ms on serverless

For a low-to-mid traffic marketing site (under 100k monthly pageviews), hosting is essentially free on either stack. For high-traffic sites, Astro's static-first model is genuinely cheaper at the bandwidth and compute layers.

#When Astro is the right call

Pick Astro when:

  • The site is content-heavy and stable. Services, blog, case studies, pricing
  • You want the best possible AEO posture without compromise
  • The site doesn't share components with a Next.js product app
  • Your team is comfortable with HTML-first markup (the .astro syntax)
  • You expect high volume of marketing content (50+ blog posts, regular content cadence)
  • Zero-JS shipping is a value, not a constraint

Real-world fits: agency marketing sites, dev tooling marketing sites where the product is somewhere else (e.g., Trigger.dev), open-source project sites, content-heavy SaaS where the marketing site is meaningfully separate from the product.

#When Next.js is the right call

Pick Next.js when:

  • You're already running Next for the product and want one stack
  • The marketing site has interactive demos or app-flavored components
  • You want React shared mental model across the team
  • You value the broader ecosystem (RSC patterns, more libraries, more hires familiar with the stack)
  • You're willing to trade ~15% Lighthouse for team velocity
  • You want OG image generation, ISR, edge functions as native primitives

Real-world fits: B2B SaaS where the marketing site and product share a codebase (Linear, Vercel, Cal.com), AI-product marketing sites with interactive demos (every YC AI company in 2025–2026), teams that have already standardized on Next for everything.

#Specific feature comparison

FeatureAstro 5Next.js 16
MDX content collectionsBuilt-in, type-safenext-mdx-remote/rsc or Contentlayer
OG image generationastro-og-canvas or third-party@vercel/og native
next-themes-equivalent dark modeManual setupnext-themes package
ISR (incremental static regen)prerender = true + on-demandNative revalidate
Edge runtimeCloudflare Pages adapterNative Vercel Edge
API routesAstro endpointsRoute handlers
Image optimizationastro:assetsnext/image
i18nAstro i18n routingNext.js i18n routing
RSS / AtomBuilt-in pluginManual route handler

Roughly equivalent feature set in 2026. The real differences are in the defaults and the philosophy, not in feature presence.

#The hybrid approach

Some teams (including some we've shipped for) split: marketing site in Astro, product in Next.js. The marketing site gets the AEO posture and zero-JS shipping; the product gets the React infrastructure.

This works, but the maintenance overhead is real. Two repos, two CI pipelines, two deploy targets, two flavors of TypeScript config. The component-sharing story is awkward. You can copy-paste, but the typings drift over time.

In 2026 we recommend the hybrid only when the marketing site is genuinely content-heavy (200+ pages) and the product is genuinely complex (large React app). For everything in between, pick one and live with the tradeoff.

#What we recommend

For most B2B SaaS teams in 2026:

  • Pre-product, marketing-only: Astro. Best AEO, fastest builds, lowest hosting cost.
  • Product on Next.js, marketing site separate: Next.js for both. The team-velocity gain swamps the ~15% Lighthouse cost.
  • Product on something else (Rails, Django, Phoenix), marketing separate: Astro. You don't share components anyway.
  • Heavy interactive demos in the marketing site: Next.js. The interactive surface is what you'll be optimizing for, not the static parts.

If you're rebuilding this site. Well, we picked Next.js because the mood selector + theme toggle + interactive contact form pushed us into territory where Next's React-everything model genuinely simplified things. We pay the ~5 Lighthouse points and the ~80KB JS baseline; we get a unified codebase. For our use case it's the right tradeoff. Yours may be different.

#A practical decision tree

  1. Is the site mostly static content (blog, services, pricing)? → Continue.
  2. Will you also run a product app? → If yes, what's that built on?
  3. If product is Next.js → Next.js for marketing too.
  4. If product is anything else → Astro for marketing.
  5. No product yet? → Astro for marketing-only; revisit when product picks a stack.

That's the whole thing. Don't overthink it.

#Migration cost

If you've already picked the wrong one, the migration cost is real but bounded:

  • Astro → Next.js: ~2–4 weeks for a 20-page site. The content moves cleanly (same MDX); the layouts get rewritten in React.
  • Next.js → Astro: ~2–4 weeks for a 20-page site. Components rewritten as .astro; client:load wrappers added where interactivity is needed.

Most of the cost is the design system port, not the framework port. If your design system lives in Tailwind + shadcn-style components, the port is mostly mechanical.

#The honest verdict

Both frameworks are excellent. The differences are real but smaller than the partisans claim. The decision is mostly about what your team already knows and what your product app runs on. Not about the frameworks themselves.

If you want help picking, or want a productized site sprint shipped in 2 weeks on either stack, that's exactly what we do.

— Want this for your SaaS?

AEO and SEO for SaaS, done properly

The schema, llms.txt, pillar content, and technical AEO infrastructure that gets your SaaS cited in ChatGPT, Perplexity, and Google AI Overviews. Not just ranked in classic search.

— Keep reading