Knowledge · Fundamentals

What is Astro? The web framework, explained.

Astro is an open-source JavaScript web framework for fast, content-driven websites: server-rendered HTML, with client-side JavaScript only where a component asks for it. This page explains how Astro works – without marketing vocabulary.

Open source, MIT licence

Astro is free software under the MIT licence, Copyright (c) 2021 Fred K. Schott. The source lives in the public withastro/astro repository.

Server-first, not a single-page app

Astro is a multi-page architecture with server rendering as the default. By default the entire site is prerendered and shipped as static HTML.

Islands instead of full hydration

Interactive components are islands on an otherwise static page. Each island gets its own loading priority – or none at all.

00 — Our Apps

See for yourself what we build.

Real screenshots instead of promises: Mini Marvin is our own progressive web app – conceived, built and run live in the browser by us. We bring the same care to your web project.

Mini Marvin · PWA

Swipe baby names instead of scrolling

Mini Marvin is our progressive web app for finding baby names: swipe through 10,000+ first names – right in the browser, no app store needed.

Mini Marvin App – Swipe baby names instead of scrolling Mini Marvin App – Decide together as a couple Mini Marvin App – Filter by origin & popularity

Got a project in mind?

Describe it in three sentences – you get an honest first assessment, usually within 24 hours.

01 — In short

What Astro is, in six sentences.

At a glance

What it is

  • Astro is an open-source JavaScript web framework for fast, content-driven websites – released under the MIT licence, currently on the Astro 7 line.

How it renders

  • Server-first.
  • By default your entire site is prerendered and static HTML pages are sent to the browser.
  • Runtime server rendering is a deliberate opt-in, route by route.

How interactivity works

  • Through the islands architecture Astro coined.
  • An island is an enhanced UI component on an otherwise static page of HTML
  • Everything around it stays plain HTML.

Where the content lives

What it works with

  • React, Preact, Svelte, Vue, SolidJS and Alpine.js have official integrations.
  • Image optimisation, TypeScript support and client-side view transitions are built in.

What it is not built for

  • Logged-in applications carrying heavy client-side state.
  • There an app framework is the better foundation – see Astro vs. Next.js.

Prefer to talk it through?

A short call clarifies scope, effort and whether we are a fit.

02 — Definition

Astro, explained properly.

What is Astro? The short definition

Astro is an open-source JavaScript web framework optimised for building fast, content-driven websites. The project describes itself as "a JavaScript web framework optimized for building fast, content-driven websites", and its homepage tagline reads "The web framework for content-driven websites". Content-driven means sites whose substance is content: marketing websites, blogs, magazines, documentation portals, case study libraries and landing page systems.

Astro puts three properties front and centre. Server-first: rendering happens on the server, and lightweight HTML goes to the browser. Content-driven: the framework is designed around content rather than around application state. Customizable: it does not tie you to one UI library and it does not tie you to one CMS.

The documentation lists five design principles you can hold the project to: content-driven, server-first, fast by default, easy to use and developer-focused. Those five principles explain most of the design decisions described below – including why serving static HTML is the default and why interactivity is the exception rather than the rule.

Who builds Astro – and under which licence?

Astro is free and open-source software under the MIT licence, Copyright (c) 2021 Fred K. Schott. The source code lives publicly in the withastro/astro repository. In practice that means you can use Astro at no cost, commercially included, and you can read, adapt and ship the code. There is no licence fee, no per-seat price and no contract with a platform vendor – a meaningful difference from hosted website platforms where operating the site is tied to a subscription.

The current major line is Astro 7. Astro follows semantic versioning, and extended maintenance with security fixes covers exactly one previous major version. The project moves quickly: Astro 6.0 went stable in March 2026 and Astro 7.0 followed in June 2026. That is not alarming, but it does mean planning. Major upgrades belong in operations as a small recurring task, not as a once-every-three-years rebuild. How that gets organised is covered under Astro support and maintenance.

Server-first: what that actually means

"Server-first" sounds like a slogan, but it describes a very concrete default. Astro renders components on the server and sends finished HTML to the browser. Then it goes one step further: by default, Astro strips all client-side JavaScript out of components. A page that asks for nothing arrives at the user without any framework JavaScript at all.

The second half of the default concerns when rendering happens. The documentation is unambiguous: by default your entire Astro site will be prerendered, and static HTML pages will be sent to the browser. Output like that can be served from any static host or CDN. If a route needs to render at request time, you turn that on for that route explicitly – more on adapters below.

The practical consequence is worth stating plainly: in Astro, performance is not an optimisation round at the end of the project, it is the starting state. You begin with a page carrying no client JavaScript and add deliberately, instead of beginning with a fully hydrated framework and laboriously stripping it back down.

Astro vs. the single-page app: the architectural difference

Astro is a multi-page architecture (MPA) with server rendering as the default – explicitly not a single-page-app client-side rendering model. That difference is fundamental enough to answer most follow-up questions.

In a single-page app, the browser first loads a largely empty HTML shell plus a JavaScript bundle. That bundle assembles the interface in the browser and then takes over navigation as well: clicks are intercepted, data is fetched, views are swapped client-side. That is the right architecture for products that behave like programs – dashboards, editors, logged-in workspaces.

In a multi-page app, every address has its own HTML document delivered by the server. The browser does the job it was built for. Astro takes that classic shape and adds the two things it historically lacked: a proper component model with selectively hydrated islands, and optional client-side page transitions so navigation can feel smooth without turning the whole site into an application.

From that follows the rule of thumb we use to sort projects: the more your project is a website, the more Astro fits. The more it is an application, the more an app framework fits. The long version is under Astro vs. Next.js and Astro vs. WordPress.

TypeScript: built in, but optional

TypeScript support ships with Astro without being mandatory. You can import .ts and .tsx files, write TypeScript inside Astro components and keep your configuration as astro.config.ts. Three tsconfig presets are provided: base, strict and strictest. One expectation worth setting: the dev server does not type-check. That is what the astro check command is for, and it belongs in continuous integration.

TypeScript gets genuinely interesting in combination with content collections: Astro derives types for your queries automatically from a collection Zod schema. A typo in a field name then surfaces at build time rather than on the live site.

Is it Astro or Astro JS?

The official name is simply Astro. People search for "Astro JS" or "Astro.js" anyway, because it is a JavaScript framework and many frameworks carry that suffix. Both refer to the same project. Worth knowing when you search: the word "Astro" is heavily occupied online by astrology services, so adding "framework" or "web framework" to your query saves time.

Short definition

An open-source JavaScript web framework for fast, content-driven websites. Its own tagline: "The web framework for content-driven websites".

Licence & origin

MIT licence, Copyright (c) 2021 Fred K. Schott. Source code public in the withastro/astro repository.

Current line

Astro 7. Semantic versioning; security fixes cover exactly one previous major version.

Design principles

content-driven, server-first, fast by default, easy to use, developer-focused.

Unsure about the stack?

We will tell you when another tool fits your project better.

03 — Core concepts

The six concepts that make Astro Astro.

Understand these six terms and you understand the framework. Everything else is implementation detail.

Islands architecture

Astro coined the term: a component-based web architecture optimised for content-driven websites. An island is an enhanced UI component on an otherwise static page of HTML. The bulk of the page stays HTML, and interactive components appear only where they are needed. Client islands hydrate individually in the browser; server islands render independently on the server via server:defer.

Performance optimisation

client:load, client:idle, client:visible

Because Astro removes all client-side JavaScript by default, interactivity is requested per component through a client:* directive, for example <MyReactComponent client:load />. The loading priorities: client:load hydrates immediately, client:idle waits until the browser is idle, and client:visible waits until the component scrolls into the viewport.

Astro web development

Content collections with Zod

A collection is a set of related, structurally identical data. Three documented benefits: type safety, content-focused query APIs such as getCollection(), and built-in caching that scales to thousands of entries. Schemas are defined with Zod, which lets Astro validate every file in a collection and provide automatic TypeScript types when you query content. Two build-time loaders ship with it: glob() for directories and file() for multiple entries in one file.

Astro CMS

Prerendering, SSR and adapters

Static is the default: the entire site is prerendered and static HTML pages are sent to the browser. On-demand rendering is enabled per route with export const prerender = false. Setting output: "server" flips the default, and individual pages come back with export const prerender = true. On-demand rendering requires an adapter for the target runtime – officially maintained ones include @astrojs/node, @astrojs/vercel and @astrojs/cloudflare.

Astro vs. Next.js

UI and CMS agnosticism

Astro does not lock you into a UI library: official integrations exist for React, Preact, Svelte, Vue, SolidJS and Alpine.js. You can combine several of them, but only inside an .astro file – per the documentation, only Astro components can contain components from multiple frameworks. It is equally CMS-agnostic: Astro is the presentation layer, while a CMS helps you write your content but does not generate the site that displays it.

Headless CMS

Images and view transitions built in

Image optimisation ships with the framework: <Image /> sets alt, loading and decoding and infers image dimensions to avoid cumulative layout shift, while <Picture /> generates multiple formats and sizes with a fallback. Sharp is the default image service. View transitions are built in too: <ClientRouter /> is a built-in, lightweight component to enable client-side routing – strictly opt-in.

Astro development agency

Got a project in mind?

Describe it in three sentences – you get an honest first assessment, usually within 24 hours.

04 — Context

Astro, a classic SPA framework and a traditional CMS.

Three architectures with three different assumptions about where a page comes into existence. This table compares construction, not quality – each column is the right answer somewhere.

An architectural comparison, not a league table: the question is not which model wins, but which one matches what you are building.
DimensionAstroClassic SPA frameworkTraditional CMS
Core architecture Multi-page architecture, server rendering by default Single-page app: one HTML shell, routing and assembly in the browser Server generates HTML per request from database and theme
What normally ships Prerendered static HTML; SSR enabled per route HTML shell plus a JavaScript bundle that builds the interface Dynamically generated HTML, usually with caching in front
Client-side JavaScript None by default; requested per component via client:* The framework runs in the browser, even on plain text pages Theme and plugin scripts, often without central control
Interactive areas Individual islands, each with its own loading priority The whole application hydrates Plugins, frequently as embedded widgets
Content model Content collections with a Zod schema, or a headless CMS over an API Free choice, usually a custom API or a headless CMS Database plus editing interface, tightly coupled
UI library Agnostic: React, Preact, Svelte, Vue, SolidJS, Alpine.js Bound to that particular framework The platform theme system
Hosting Static hosting or CDN; an adapter such as Node, Vercel or Cloudflare for SSR Static output or a runtime, depending on setup Server with a runtime and a database
Ongoing maintenance Dependencies and major upgrades; security fixes for one previous major Framework and library upgrades Core, theme and plugin updates, some security-critical

Prefer to talk it through?

A short call clarifies scope, effort and whether we are a fit.

05 — Decision

When Astro fits – and when it does not.

This page explains rather than sells, so the right-hand column carries the same weight as the left. Astro is an excellent tool for a clearly bounded purpose – and the wrong choice outside it.

Astro fits when …

Content is the core of the product, and speed plus discoverability are commercially relevant.

  • The site mainly delivers content: service pages, a blog, documentation, a magazine, case studies, landing pages.
  • Many similarly structured pages should be generated from structured data – locations, products, categories, authors.
  • Interactivity is the exception rather than the rule: a search field, a configurator, a map, a booking form.
  • Content flows in from several sources – Markdown in the repository, a headless CMS, a product API.
  • You want control over code and deployment: your own repository, your own hosting, no platform lock-in.
  • An existing site is suffocating under plugins, themes or build times – then look at migrating to Astro.

Another tool fits better when …

These cases are more common than agency websites like to admit. Ignoring them means building a project against its own architecture.

  • What you are building is a logged-in application: roles, dashboards, real-time data, heavy client-side state. That calls for custom software development.
  • Almost every component would be interactive. Where the whole page is an island, the islands architecture loses its point – see Astro vs. Next.js.
  • Your marketing team wants to build pages visually, without a repository and without deployments. Then Webflow is the more honest suggestion.
  • You depend heavily on a plugin ecosystem – shop, membership area, booking system – and nobody in-house wants to touch code: Astro vs. WordPress.
  • Nobody on the team wants to work with Git and deployments and no support arrangement is budgeted. Tools nobody operates become a liability.
  • You need one campaign page tomorrow and have no budget for a setup. A visual tool gets there faster.

Unsure about the stack?

We will tell you when another tool fits your project better.

06 — In practice

How an Astro project actually starts.

Content model first, layout second

The most visible difference between an Astro project and a website built in a page builder is the order of work. In Astro the starting point is not the layout but the question of which content types exist and which fields belong to them. A blog post has a title, a date, an author, an excerpt, a cover image and categories. A case study has a client, an industry, services and an outcome. That structure is described as a collection and pinned down with a Zod schema.

The effort pays off twice. First, the schema produces TypeScript types automatically, so a query such as getCollection() knows exactly which fields exist. Second, the schema is a guardrail: if a required field is missing or a date arrives in the wrong format, the build breaks – not the live website. A schema is technically optional, but the documentation recommends one, and in practice it is the difference between a content set that stays maintainable and one that quietly rots.

Which pages are static – and which are not

The second early decision is about rendering. The default is prerendering: every page is generated at build time and served as static HTML. That covers the overwhelming majority of pages on a company website and runs on any static host or CDN.

There are exceptions: form handling, a personalised view, search across a large dataset, a price lookup from a third-party system. Those routes opt into on-demand rendering, and the project gains an adapter for the target runtime. That decision is made per route rather than for the whole project, and it determines your hosting model and running costs later. Which is exactly why it belongs at the beginning rather than at the end.

For dynamic pieces inside an otherwise static page there are also server islands: rendered independently on the server and deferred with server:defer. The shell of the page stays aggressively cacheable while personalised elements load afterwards, without blocking the first render.

Who maintains the content afterwards

Astro is CMS-agnostic – it is the presentation layer. The documentation draws the line cleanly: a CMS helps you write your content, but does not generate a site that displays it. Two workable paths follow. Either content lives in the repository as Markdown, MDX, Markdoc, JSON, YAML or TOML and is read through content collections – lean and inexpensive, well suited to technically comfortable teams and infrequent changes. Or a headless CMS handles editing with an interface, previews and permissions; documented paths exist for Storyblok, Sanity, Contentful, Strapi, Payload, Directus, Prismic, DatoCMS, Hygraph, Keystatic, TinaCMS, Decap and WordPress running headless, among others.

There is a third path that only becomes possible because the content model is typed: editing the website by chat. Because a collection with a Zod schema is machine-addressable, an AI agent can write into it in a structured way – change a paragraph, publish a post, swap an image, correct a price, as a message instead of a CMS session. The schema acts as the guardrail: an agent can only fill fields that exist, in formats that validate. Every change goes through a traceable commit and a deploy, so there is history, review and rollback. We already run this kind of thing in production – our WhatsApp AI agent is live proof that chat agents are day-to-day work here rather than slideware. What it looks like for a website is described under edit your website by chat.

And the limits, stated in the same breath: the chat route does not replace an editorial system for large teams with approval workflows, it complements one. Editorial responsibility stays with the client – an agent proposes and writes, it does not decide. Structural changes such as new page types, layout or navigation remain development work. And the scope – which fields, which collections, which approval level – is defined per project.

When a website already exists

Most Astro projects are not greenfield. Official migration guides to Astro exist for Next.js, Gatsby, WordPress, Hugo, Jekyll, Eleventy, NuxtJS, SvelteKit, Create React App, Docusaurus, GitBook, Gridsome, Pelican and VuePress, among others. Said honestly: the documentation itself notes that many of those pages are still stubs – a guide is not a migration plan.

For Webflow and Framer there is no official guide. Getting off those platforms means exporting or extracting the existing pages and rebuilding them as Astro components. That is entirely doable and done regularly, but it is a rebuild with content transfer rather than a button press. If you want a realistic view of the effort, the process is under migration to Astro and the cost drivers are under what an Astro website costs.

Whatever the source platform, one rule holds: a migration without a redirect plan and without measurement before and after is a blind flight. We measure visibility and load times inside the project itself – field data from your real audience says more than someone else's benchmark numbers.

What maintenance looks like afterwards

An Astro project is an ordinary software project with dependencies. That is not a disadvantage next to hosted platforms, but it is a difference: nobody updates it for you in the background. Concretely, operating one means keeping dependencies current, running type checks and builds in continuous integration, and planning major upgrades rather than deferring them – security fixes cover only the current major and exactly one previous major version.

Teams who can cover that internally need nobody for it. Teams who cannot should budget for it before the project starts, not once an upgrade is two majors behind. That is what support and maintenance is for and, when several parties are involved, what IT project management is for.

Got a project in mind?

Describe it in three sentences – you get an honest first assessment, usually within 24 hours.

07 — Timelines

How long does it take to learn Astro – and to ship a first project?

Two questions that almost always arrive together: how quickly does a team get productive in Astro, and how long does a first real project run? Prices are not on this page – the cost drivers are written out under Astro development cost. Time is something we can talk about up front. The ranges below are our own estimate for the way of working described in section 06 – not an industry figure, and not a guarantee.

Getting up to speed: from first page to independence

  • Looking at it and building a first page: an afternoon. Create a project, one layout, one page, one Markdown entry. That only answers whether the way of working suits you, though. It is not competence yet.
  • Coming from React, Vue or Svelte: a few days to a week to reach the core concepts. Three things are genuinely new: the client directives and the question that precedes them, namely which component needs interactivity at all; the distinction between prerendered routes and routes that render at request time; and content collections with a Zod schema. The components themselves are HTML, CSS and TypeScript – you are not learning a second programming model.
  • Coming from WordPress or classic PHP: two to four weeks, and most of that effort is not Astro. It is Git, a build step, a deployment pipeline and the shift from "change it in the admin" to "change it in the repository". Teams who want that route should choose it deliberately – or separate editing from engineering with a headless CMS and keep the learning curve on the development side.
  • A technical evaluation with one real content type: one to two weeks. One page type, one collection schema, one interactive island, one deployment. That is the most honest way to make this decision, because it succeeds or fails against your actual content rather than against a demo. If you want that step accompanied, it is Astro consulting and not yet a project.

A first project: three realistic shapes

Counted from kickoff to go-live, not from the first email. The order of work is the one described in section 06: content model first, then the rendering decision route by route, then the question of who maintains it afterwards.

  • Focused website, three to five page types, content already written: four to six weeks. One language, no CMS, form and analytics connected, everything prerendered. It gets faster only if design and copy are already signed off.
  • Company website with an ongoing editorial routine: eight to twelve weeks. Six to twelve page types, a blog or knowledge section, a headless CMS with modelled content types, previews and roles, plus one or two integrations. The largest single item is rarely the code – it is the content model.
  • Relaunch with a migration, several languages or a large archive: fourteen to twenty weeks. An inventory of every indexed URL, a redirect map, data transfer out of the old system, sign-off in several rounds. The migration page describes that process step by step.

The range moves on a handful of variables, and technology is rarely among them: the number of distinct page types – not the number of pages, because three hundred posts of the same type cost barely more than thirty; whether content is migrated or newly written; whether a CMS is added and who fills it; every additional language; every integration with its own runtime, such as CRM, booking or payment; and your own approval cycles.

The most common reason for delay appears in none of those lines. It is content and sign-off. When copy, images and access credentials are ready and feedback arrives within a few working days, the plan holds. When each template needs two rounds of review, that is weeks rather than days – the most consistently underestimated item in website projects, whatever the framework.

How a project like that runs with us, which steps we take and when we advise against Astro is on the service page: Astro development agency. If you need a number instead of a range, you get one after the first conversation – together with the assumptions it rests on.

What shortens the learning curve

Existing knowledge of HTML, CSS and TypeScript – nothing more is needed to start. Existing React, Vue or Svelte components can be reused as islands instead of being rewritten. And a clear decision about which parts of the page genuinely need to be interactive.

What pushes the project range up

Every additional page type. Newly written rather than migrated content. Every further language, including hreflang logic. A content model that has to be invented first. Routes with on-demand rendering and the adapter that comes with them. And approvals that pass through several committees.

When several parties are involved

Once an agency, an internal IT team, editors and a third-party system are all in play at once, coordination decides the date rather than the code. On request we take on IT project management as well.

Prefer to talk it through?

A short call clarifies scope, effort and whether we are a fit.

08 — At a glance

Astro at a glance – the architecture, honestly sorted.

Eight architectural dimensions, each with its caveat next to it. This is not a list of advantages: what Astro does well makes something else less comfortable, and that belongs in a decision. The final row is our opinion, clearly marked as one.

CriterionHow it looks with AstroThe caveat
Core architecture A multi-page architecture with server rendering as the default – explicitly not a single-page-app model. Every address has its own HTML document and the browser handles navigation. For products that behave like programs – roles, dashboards, real-time data, heavy client-side state – it is the wrong base shape. That is what custom software development is for.
What ships by default By default the entire site is prerendered and served as static HTML. Astro strips all client-side JavaScript out of components as long as nothing asks for any. Speed is enabled, not guaranteed. Hydrating one heavy island immediately on every page gives the advantage straight back – architecture does not replace discipline.
Interactivity The islands architecture: an island is an enhanced UI component on an otherwise static page. Loading priority is set per component with client:load, client:idle or client:visible; server islands render on the server afterwards via server:defer. The model loses its point once nearly every component would be interactive. And each island is a decision in its own right: where nobody makes it, the same bundles quietly appear as in a single-page app.
Dynamic behaviour at request time On-demand rendering is enabled per route with export const prerender = false, or the default is flipped with output: "server". That requires an adapter for the target runtime; officially maintained ones include Node, Vercel and Cloudflare. As soon as one route renders at request time you need a runtime: running costs, one more component in monitoring and one more thing that can fail. A purely static build does not have that class of problem.
Content model Content collections describe a schema per content type, validated with Zod, with TypeScript types derived automatically, queries such as getCollection() and built-in caching for thousands of entries. Alternatively a headless CMS delivers content over an API. The modelling happens up front, not along the way. Reshaping a schema later is development work rather than a click in an interface – and Astro does not ship a visual page builder.
UI ecosystem Framework-agnostic: official integrations for React, Preact, Svelte, Vue, SolidJS and Alpine.js. Existing components can be carried over instead of rewritten. Several frameworks on one page are allowed, but only inside an .astro file – and each additional one brings its own runtime to the browser. The freedom is real; using it sparingly stays your job.
Built-in tooling TypeScript is built in with the base, strict and strictest presets. Image optimisation is built in: <Image /> sets alt, loading and decoding and infers dimensions, while <Picture /> generates several formats. View transitions ship as <ClientRouter />. The dev server does not type-check – without astro check in continuous integration the safety net is theoretical. Images in public/ bypass processing entirely, remote images have to be allowed in configuration, and view transitions are opt-in and add some client JavaScript.
Maturity and versioning Open source under the MIT licence, developed in the public withastro/astro repository, currently on the Astro 7 line. Astro follows semantic versioning; security fixes cover the current major and exactly one previous major. The cadence is brisk: Astro 6.0 went stable in March 2026 and Astro 7.0 followed in June 2026. Major upgrades therefore belong in operations as a small recurring task – see Astro upgrades.
Our take For anything that is primarily read, we currently consider Astro the most sensible foundation. Not because of someone else's benchmarks, but because of the default: what is never shipped never has to run. The most expensive mistake in this category of project – an application framework behind a brochure website – simply cannot happen here architecturally. We advise against it when nobody in-house wants to work with Git and deployments and no support arrangement is budgeted; then Webflow is the more honest suggestion, and we build that ourselves. Likewise when the site is really a product with a login behind it – in that case you are building an application, not a website.

Unsure about the stack?

We will tell you when another tool fits your project better.

09 — FAQ

Frequently asked questions about Astro.

Can Astro do dynamic content, or is it only for static sites?

Both, and the decision is made per route. Prerendering is the default: the whole site is generated at build time and served as static HTML. A single route renders at request time with export const prerender = false; with output: "server" the default flips and individual pages come back with prerender = true. For dynamic pieces inside an otherwise static page there are server islands, rendered independently on the server and deferred with server:defer – the shell stays cacheable while the personalised element loads afterwards.

Does an Astro website need a server?

Not necessarily. By default the entire site is prerendered and static HTML pages are sent to the browser, which runs on any static host or CDN. If individual routes need to render at request time, you enable on-demand rendering there and add an adapter for the target runtime. Officially maintained adapters include the ones for Node, Vercel and Cloudflare. Which model makes sense for your project is covered under Astro hosting.

Does Astro need JavaScript?

To build, yes: Astro is a JavaScript framework and its build runs in a JavaScript environment. In the browser the answer is different. By default Astro removes all client-side JavaScript from components. Anything that should run in the browser is requested explicitly, per component, through a client directive. A page with no interactive islands reaches the user with no framework JavaScript at all.

What are Astro islands?

An island is an enhanced UI component on an otherwise static page of HTML – the term comes from the Astro project itself. There are two kinds. Client islands are interactive components that hydrate individually in the browser, controlled with client:load, client:idle or client:visible. Server islands render independently on the server via server:defer, so the page shell can stay cached.

Can I use React in Astro?

Yes. Astro is UI-framework-agnostic, with official integrations for React, Preact, Svelte, Vue, SolidJS and Alpine.js. You can combine several frameworks in one project, but only inside an .astro file – the documentation states that only Astro components can contain components from multiple frameworks. Without a client directive your React component renders on the server and arrives as plain HTML. Existing components can often be carried over rather than rewritten.

Is Astro good for SEO?

The technical foundations are strong. By default your site is prerendered and served as static HTML, so content sits in the delivered document rather than appearing only after hydration. Built-in image optimisation infers dimensions and thereby avoids layout shift. Rankings still come from content, structure and links – a framework does not replace those. What is actually holding an existing site back shows up in an SEO audit.

What is the difference between Astro and Next.js?

The difference is architectural. Astro is a multi-page architecture with server rendering as the default, and it removes client-side JavaScript unless something asks for it. Next.js brings the app model that logged-in areas, dashboards and heavy client state assume. Rule of thumb: the more your project is a website, the more Astro fits; the more it is an application, the more Next.js fits. The long version: Astro vs. Next.js.

How does Astro differ from a static site generator such as Hugo or Jekyll?

In their defaults they sit close together: all three produce static HTML that can live on any CDN. The differences are around that. Astro brings a component model in which interactive islands are written in React, Preact, Svelte, Vue, SolidJS or Alpine.js, a typed content model through content collections with Zod – and the option to let individual routes render at request time. Hugo and Jekyll are leaner in return, carry no JavaScript toolchain behind them and remain a good choice for purely static documentation or blogs. Official migration guides to Astro exist for both.

What is Astro bad at?

Four cases, and we would rather name them up front. First, logged-in applications with roles, real-time data and heavy client-side state – there an app framework is the right foundation. Second, pages where nearly every component would be interactive; the islands architecture then loses its point. Third, projects that depend mainly on a plugin ecosystem – shop, membership area, booking – where nobody wants to touch code. And fourth, teams who want to build layouts visually themselves: Webflow is the better tool for that, and we build it too.

How mature is Astro, and how stable is the release cadence?

Astro has been public since 2021 and follows semantic versioning. The current major line is Astro 7. The cadence is brisk: Astro 6.0 went stable in March 2026 and Astro 7.0 followed in June 2026 – two majors within one year. The planning-relevant part: extended maintenance with security fixes covers exactly one previous major version. Nothing dramatic follows from that, but an operational decision does: major upgrades belong in the calendar as a small recurring task rather than as a rebuild every three years. What that looks like is under Astro upgrades.

Can you hire developers for Astro?

It is somewhat harder than for WordPress or React, and we say so plainly: there are fewer CVs with "Astro" on them. The effort is still smaller than it sounds, because Astro components are HTML, CSS and TypeScript and interactive islands are written in React, Preact, Svelte, Vue, SolidJS or Alpine.js. You are hiring from the general JavaScript market, not from an Astro market. The honest side of the ecosystem belongs here too: there is no plugin marketplace of the WordPress kind, and the documentation itself notes that some migration guides are still stubs.

Is Astro worth it for a small five-page website?

Not automatically. If five pages stay five pages, change rarely and nobody in-house wants to work with Git, a visual tool gets there faster and cheaper – in that case we suggest Webflow. Astro starts paying off once page types repeat, once a blog or knowledge section joins, once content comes from a structured source, once load time and discoverability matter commercially – or once you want repository, hosting and domain fully in your own hands.

Can I migrate an existing website to Astro?

Usually yes. Official migration guides exist for WordPress, Next.js, Gatsby, Hugo, Jekyll, Eleventy, NuxtJS, SvelteKit and Docusaurus, among others – though the documentation itself notes that many of them are still stubs. For Webflow and Framer there is no official guide; that route means exporting or extracting the pages and rebuilding. Process and risks: migration to Astro.

Our marketing team wants to publish pages themselves without waiting for a sprint. Is that possible?

Yes, through three combinable routes. A headless CMS with an interface, previews and permissions for everyone who edits daily. Content collections with Markdown in the repository, when content is structured and changes rarely. Or editing by chat: because the Zod schema is machine-addressable, an agent can only fill fields that exist, in formats that validate – change a paragraph, publish a post, swap an image as a message rather than a CMS session, with a commit, a preview and a rollback. That chat agents are day-to-day work here is evidenced by our own WhatsApp AI agent. What the route does not replace: approval workflows in large editorial teams, and structural layout changes.

Can we develop an Astro project further in-house, or switch agencies later?

Yes, and that is one of the reasons for building this way. Astro is open source under the MIT licence; there is no licence, no proprietary editor and no building block tied to one supplier. What you need: somebody who works with HTML, CSS, JavaScript and Git, the repository with its full history, documented build and deployment steps, and a manageable component library rather than a hundred individual pages. A handover stays uncomfortable, but it is onboarding rather than a rewrite.

Who is liable if something breaks after launch?

We are – for what we built and what does not work the way it was agreed. That gets fixed under statutory warranty without a new invoice. A change request is a separate matter: a new feature or a new page type is a commission, not a defect. Which of the two categories a report falls into is something we say before we start, not afterwards. Fixed response and restoration times belong in a written maintenance agreement if your procurement team needs them.

Our IT security team asks about the attack surface of an Astro site. What do we tell them?

That the classic attack surface of a content website largely disappears. A prerendered Astro site has no database, no admin login and no plugin ecosystem in the delivery path – the usual route through a vulnerable extension does not exist. What remains and genuinely deserves review: permissions on the repository and build pipeline, the provenance of npm dependencies, form and API endpoints, every route with on-demand rendering together with its runtime, a headless CMS as a separate system with its own login, and the domain and hosting accounts. We work with mandatory two-factor authentication, least privilege and regular dependency updates.

What about GDPR, hosting location and subprocessors?

Astro is a framework and processes no personal data itself – the question is decided by hosting, forms, analytics and CMS. A static build can run with a provider in the EU or in Germany. We self-host fonts rather than loading them from third-party servers, cookie-free analytics options exist, and the form endpoint is chosen deliberately rather than inherited. We name every service provider involved so your data protection officer can put the processing agreements in place. We do not provide legal advice; the sign-off stays with you. More on this: GDPR-compliant websites.

You have no public Astro reference. Why should we trust you with a project?

Because we would rather say so than invent one. We do not yet have a publicly showable Astro client project. What we do have: a Webflow reference we built and maintain, our own products that we developed and shipped ourselves, and years of software development with repositories, continuous integration and operations. The framework is the smaller part of that work. Testing us is cheap: the initial assessment costs nothing, the repository is yours from day one, and measurement happens before and after launch inside your own project.

Is Astro free?

Yes. Astro is open-source software under the MIT licence; the framework itself carries no licence fee and no per-seat price, commercial use included. Costs arise from development, content, hosting and operations – and, if you use one, from a headless CMS.

Who is behind Astro?

An open-source project developed publicly in the withastro/astro repository. The MIT licence lists the copyright from 2021 in the name of Fred K. Schott. Astro is maintained and advanced by a core team and a community of contributors, currently on the Astro 7 line.

Which UI frameworks does Astro support?

Official integrations exist for React, Preact, Svelte, Vue, SolidJS and Alpine.js. Several of them may appear on the same page, but only inside an .astro file – per the documentation, only Astro components can contain components from multiple frameworks.

Can Astro do a blog?

Yes, that is one of the cases it was built for. Posts live as Markdown, MDX or Markdoc in a content collection with a Zod schema, queries run type-safely through getCollection(), and the built-in caching is explicitly intended for collections with thousands of entries.

Is it called Astro or Astro.js?

The official name is simply Astro. People search for "Astro JS" or "Astro.js" anyway, because it is a JavaScript framework and many frameworks carry that suffix. Both refer to the same project – adding "framework" to your query saves time, since the word "Astro" is heavily occupied online by astrology services.

Now you know what Astro is.

Whether it fits what you are building is the next question – and that one is answered by your content model, your editorial routine and your current platform, not by the framework. The service page explains how we work with Astro, what a project covers and when we advise against it.

Still have questions about Astro?

Tell us briefly what you are working on. You get a plain-language answer without jargon – including when a different tool turns out to be the better choice.

— Contact

Questions about Astro?

Describe what you have in mind – you get an honest assessment, not a pitch.

Call now +49 155 63582204 Message on WhatsApp Write an email

We usually reply within 24 hours.
Remote & on site – working across the DACH region (DE, AT, CH), with international project experience.

What is it about?
Timeframe (optional)

Your details are only used to process this inquiry – no newsletters, no sharing.