We ship both Astro and Next.js for clients every quarter. The choice is rarely about which framework is "better" — it depends on what you’re building, who maintains it, and what trade-offs you can absorb. This post is the practical decision framework we use at Schedars in 2026.
TL;DR
Astro for content-heavy sites: marketing pages, blogs, documentation, e-commerce storefronts that don’t need real-time interactivity. Next.js for app-like products: SaaS dashboards, multi-step flows, anything with auth-gated content and dynamic data. If you’re unsure, default to Astro — it’s easier to add interactivity to a static site than to remove it from an SPA.
When to choose Astro
Astro is built around an "islands of interactivity" model: pages render as static HTML by default, and you opt into client-side JavaScript only for components that need it. The result is shockingly fast Lighthouse scores out of the box and minimal bundle sizes.
Use Astro when
- Content is mostly static or build-time generated (CMS, MDX, markdown)
- You need top-tier Core Web Vitals without optimization theatre
- The team is comfortable with multiple UI frameworks (you can mix React, Vue, Svelte components in one project)
- SEO and lighthouse are first-order concerns, not afterthoughts
- Hosting cost matters — static output deploys to any CDN edge cheaply
Real numbers: a typical Schedars marketing site on Astro hits Lighthouse 95+ Performance and 100 SEO with zero perf-tuning beyond image optimization. JS bundle is usually under 30KB gzipped per route.
When to choose Next.js
Next.js is the de-facto framework for React apps that need SSR, ISR, server actions, edge runtime, or a tightly integrated full-stack experience. Vercel’s investment in DX (App Router, RSC, streaming) makes it the path of least resistance for app-like products.
Use Next.js when
- Significant client-side state — dashboards, builders, editors, multi-step forms
- Authenticated routes with per-user content
- You need server actions or React Server Components for incremental backend work
- The team is React-first and prefers a single mental model across pages and components
- You want Vercel platform features tightly integrated (preview deploys, image optimization, edge functions)
Caveat: Next.js bundles are larger by default (a basic page is 80–150KB gzipped before you add features). Performance is achievable but takes work — careful component splitting, dynamic imports, server components where possible.
Performance: the real numbers
We benchmarked our last 8 client launches on identical content and identical hosting (Vercel). Astro projects averaged Lighthouse Mobile Performance 96 and TTFB of 82ms. Next.js projects averaged 88 and 145ms TTFB. The gap closes when Next.js uses RSC aggressively, but Astro is harder to outrun for content sites because it ships less JavaScript by design.
That said, Lighthouse score isn’t conversion. A Next.js dashboard with a 78 mobile score can convert better than an Astro landing at 99 if the dashboard solves a real user problem and the landing doesn’t. Pick the framework that matches the product, not the metric.
Developer experience
Astro: simpler mental model (mostly HTML with sprinkles of JSX), faster builds for content sites, but smaller ecosystem. Routing is file-based and obvious. Component model is pragmatic — you write .astro files that look like enhanced HTML, then drop in React/Vue/Svelte components when you need interactivity.
Next.js: deeper React patterns (RSC, Server Actions, streaming), larger ecosystem, more opinionated. App Router is powerful but takes time to internalize — Server Components, Client Components, the "use client" boundary, caching layers (fetch, request memoization, full route cache, data cache). DX is excellent once you climb that learning curve.
What we use at Schedars
Schedars.com itself runs on Astro — it’s a content-heavy site with portfolio, blog, and marketing pages. We don’t need a single component to mount on the client by default. The current Lighthouse score on schedars.com is 97 Performance / 100 SEO mobile.
For client SaaS work, we default to Next.js with App Router and React Server Components. Recent projects: a B2B billing dashboard (Next.js + Postgres + Stripe) and a healthcare intake portal (Next.js + Drizzle + Auth.js). Both shipped with strong perf budgets enforced via Lighthouse CI in the pipeline.
Bottom line
Astro and Next.js solve different problems. Astro wins when your bottleneck is content delivery and Core Web Vitals. Next.js wins when your bottleneck is app behaviour and full-stack integration. The right answer is rarely "one framework everywhere" — at Schedars we ship marketing on Astro and product on Next.js, and they coexist with shared design tokens.
If you’re weighing this for a specific project, drop us a line — we’ll listen for ten minutes and tell you what we’d pick and why.