A marketing site has two jobs: rank in Google and convert visitors. Most stacks compromise both. We rebuilt atico3.com in Astro a year ago. Mobile Lighthouse sits at 90, desktop at 99, and updating content is faster than the PHP site it replaced.

Here’s when Astro is the right call. And when it isn’t.

What Astro actually is

Astro is a static-site framework that ships zero JavaScript by default. You write components in React, Vue, Svelte, or its own .astro syntax. At build time it produces HTML. Interactive parts (a calendar, a search bar, a form) load JS only on the elements that need it.

The contrast matters. A Next.js page hydrates with React on load: 80–120 KB of JavaScript runtime, even for a static landing page. WordPress themes ship their own runtime plus whatever page builder is on top. Astro renders the same page with no framework runtime at all. Any JavaScript on your page is what you chose to add: an analytics tag, an animation library, a form widget. You pay only for what you opted into, not for hydration overhead.

JavaScript shipped on an identical blog homepage

85 KB Next.js (static export)
8 KB Astro

Gzipped JS payload for the same blog template before any interactive features are added

1 BetterLink: Astro vs Next.js benchmark

If your marketing site spends 80% of its JavaScript budget hydrating things that never change, you’re paying for nothing.

For a portfolio site, a SaaS marketing page, a blog, a case study collection: 95% of the content doesn’t change between sessions. Hydrating it on every load is overhead.

When Astro is the right call

Performance is a measurable KPI

Bounce 32% 1 higher bounce probability when page load grows from 1s to 3s
Revenue 8% 2 revenue increase after Vodafone Italy improved LCP by 31%
Conversion 3.5% 3 drop in conversion for every 100ms slower page load (Shopify platform data, 2026)

1 Think with Google 2 web.dev: Vitals business impact 3 Shopify: Store speed and conversion

If you’re in B2B SaaS and a slow mobile site loses leads, Astro removes most of the work. Lighthouse Performance, Core Web Vitals, and Time to Interactive all improve when you stop shipping unused JS. We took atico3.com from a mobile Lighthouse score of 63 to 90 in one afternoon by fixing cache headers, deferring Google Tag Manager, and optimizing the LCP image. None of that work is Astro-specific. It’s the kind of pass we run on client sites too. But Astro doesn’t fight you on it.

Most content is static or CMS-driven

Case studies, blog posts, landing pages, pricing tables. Astro’s content collections handle the common shapes (Markdown with frontmatter, typed schemas, glob loaders) without external dependencies. Add Sanity or Contentful when your content team grows past two or three writers.

SEO matters and you’re not chasing app-shell pageviews

Astro emits clean semantic HTML on the first byte. Google indexes it the same way it indexes a 2005 blog. AI Overviews and ChatGPT citations parse server-rendered HTML more reliably than JS-rendered pages. If part of your traffic strategy is being cited by LLMs, this is non-negotiable.

You want islands, not full SPAs

Need a booking widget, a search box, an interactive pricing calculator? Astro lets you drop a React, Vue, or Svelte component into one section without converting the whole site. The rest of the page stays static.

You’re shipping with AI assistance

This is the practical reason we mention Astro alongside React and Next.js. Astro has a smaller API surface and less magic than Next.js. AI assistants ship working Astro code on the first try more often than Next.js, where edge cases around server components, the app router, and caching behaviour produce subtle bugs. For small teams using AI to compress timelines, that delta is real.

When Astro is the wrong call

Astro is wrong when your marketing site IS the app.

Your marketing site is the app

If your homepage is a dashboard, has authenticated routes, real-time updates, or a complex user flow, use Next.js or Remix. Astro can handle some of this with adapters, but you’ll fight the framework on every feature.

Your team is React-only and won’t learn .astro files

The .astro syntax is essentially HTML with JavaScript expressions. The learning curve is about a week for a React developer. But if you have one engineer who pushes back, don’t fight it. A site shipped in Next.js is better than a site stalled in framework debates.

You need edge personalization or split-testing at scale

Edge middleware, server-side personalization, complex feature flags. Possible with Astro adapters (Netlify, Vercel, Cloudflare), but the integration is rougher than Next.js. If you live in Vercel and use their split-test tooling daily, stay there.

How to decide for your project

The framework that fits is usually obvious once you stop conflating “marketing site” with “app”.

Three questions in order. Stop at the first one that resolves.

  1. Will this site grow into a logged-in product or dashboard? If yes, use Next.js or Remix. The marketing pages can live in the same app, or run separately on Astro and benefit from independent deploys.
  2. Will the marketing site have more than ~10 pages with shared layout and SEO requirements? Use Astro.
  3. Is it a single landing page with no content updates planned? Anything works. Astro is still the smallest and fastest, but a Framer page will ship faster if you don’t have a dev team.

The first two questions cover most cases.

The actual reason this matters

A marketing site is a sales tool. Every second of load time costs leads. Every JavaScript error in the console costs trust. Every WordPress security alert costs an engineer’s afternoon. Picking the right framework isn’t a developer preference. It’s a business decision that compounds for years.

For most marketing sites, that decision is Astro.