We’ve been building websites professionally for over a decade. In that time, we’ve worked across almost every major platform and framework: WordPress, Webflow, Next.js, Nuxt, SvelteKit, Gatsby, and more. Each had its moment.
In 2025, for the majority of our client projects, we reach for Astro first.
This post isn’t a sponsored piece or a framework fanboy take. It’s an honest breakdown of why Astro has earned the top spot in our stack — and where it doesn’t belong.
The Performance Baseline Is Exceptional
Astro ships zero JavaScript by default. Every other major framework ships a JavaScript runtime to the browser whether your page needs it or not. Astro flips this: the default output is plain HTML and CSS, and JavaScript is only added where you explicitly opt in.
For most marketing websites, portfolio sites, and content-heavy pages, this is exactly the right default. The result is pages that score 95–100 on Google Lighthouse without heroic optimisation effort.
This matters more than ever. Google’s Core Web Vitals are a confirmed ranking factor. Page speed directly impacts conversion rates. We’ve seen sites replatform from WordPress to Astro and gain 15–30 positions in organic search rankings within 90 days — with no other SEO changes.
Content Collections Are a Game Changer
Astro’s built-in Content Collections API is one of the most underrated features in modern web development.
It gives you:
- Type-safe frontmatter with Zod schema validation
- Built-in markdown and MDX rendering
- Automatic slug generation
- Query and filter utilities out of the box
For clients who need a blog, case study section, team page, or any structured content — Content Collections removes the need for an external CMS for simpler use cases, and integrates cleanly with headless CMSes like Sanity or Contentful when you need editorial tooling.
// Fully type-safe content — errors at build time, not runtime
const posts = await getCollection('blog');
const featured = posts.filter(post => post.data.featured);
Compare this to WordPress, where content types are an afterthought bolted on with plugins, or Next.js where you’re rolling your own data fetching layer from scratch every time.
The Island Architecture Is Just Good Engineering
Astro’s Island Architecture — the idea that interactive components are isolated “islands” in an otherwise static page — is one of the most sensible approaches to web performance I’ve encountered.
Instead of hydrating your entire page with a JavaScript framework, you selectively hydrate only the components that need interactivity:
<!-- This component loads its JS only when visible in the viewport -->
<InteractiveChart client:visible />
<!-- This loads immediately on page load -->
<NavigationMenu client:load />
<!-- This never ships JS — pure HTML output -->
<StaticTestimonials />
This pattern makes it trivially easy to reason about performance. You always know exactly where JavaScript is going and why.
Multi-Framework Support Is Genuinely Useful
Astro lets you use React, Vue, Svelte, Solid, and Preact components in the same project. In practice, we mostly pick one framework per project — but there are real scenarios where this matters:
- Migrating a legacy React codebase to Astro incrementally
- Using a Vue component library a client already owns
- Pulling in a Svelte animation library without adopting Svelte wholesale
It removes the “all-or-nothing” constraint that often makes framework migrations painful.
Where Astro Doesn’t Win
To be balanced: Astro is not the right choice for everything.
Highly interactive applications — dashboards, SaaS products, apps with complex client-side state — are better served by Next.js, SvelteKit, or a dedicated frontend framework. Astro can handle interactivity, but it’s optimised for content-heavy sites first.
Projects requiring a visual editor — clients who want to edit page layouts visually, not just content, are better served by Webflow or a headless CMS with a page builder.
Very rapid prototyping — when you need something live in hours, a Webflow template or WordPress theme is faster to spin up than a custom Astro build.
Our Typical Astro Stack
For most client projects, we pair Astro with:
- Tailwind CSS + DaisyUI — utility-first styling with a component layer
- Sanity CMS — for clients who need editorial content management
- Vercel or Netlify — edge deployment with excellent DX
- TypeScript — for type safety across content schemas and components
This combination gives us excellent developer experience, outstanding performance out of the box, and a content layer that non-technical clients can actually use.
The best framework is the one that fits the project. For marketing sites, portfolios, agency websites, and content-driven experiences, Astro currently has no equal in the performance-to-developer-experience ratio.
We’re not switching any time soon.