Static Sites Are Having a Renaissance. Here Is Why I Chose Astro

A reflection on why Astro fits content-driven static sites, based on recent website projects, a blog migration from Hexo to Astro, and comparisons with Hugo, Eleventy, VitePress, Docusaurus, and Next.js.

Cloudflare recently asked a question on X:

Static sites are having a renaissance. What is your favorite static site generator right now and why do you prefer it?

Astro appeared often in the replies.

That matches my own experience over the past year. I have been using Astro in quite a few new projects, mostly official websites, product pages, and content sites. This blog also moved from Hexo to a new system built on top of Astro.

I increasingly feel that static sites are not outdated. They are becoming important again.

But this round of static sites is not a return to old template systems, plugin piles, and theme tweaking. It is a way to use a modern JavaScript toolchain during development while shipping standard HTML, CSS, and only the JavaScript that is actually needed.

Astro fits exactly into that position.

Chinese version of this article

Static content pages becoming central again in a modern toolchain

Why Static Sites Matter Again

The advantages of static sites have always been there: they are fast, stable, cheap to host, easy to cache, simple to deploy, and have a small security surface.

If a page mainly exists to present content, such as a blog post, homepage, product page, documentation page, portfolio, or campaign page, the ideal output should usually be HTML and CSS. Users should not have to download a large JavaScript bundle first and then wait for the browser to assemble the actual content on the client side.

Over the past few years, the frontend community has become used to building everything as if it were a Web app. React, Vue, Next.js, Nuxt, and SvelteKit are all powerful, but their mental model often starts from “application”: state, routing, data fetching, hydration, client-side interaction, server rendering, caching, and edge runtime.

Those capabilities matter for complex applications. For many content-driven websites, however, they are not the starting point. They are extra cost.

The renaissance of static sites is not nostalgia. It is a practical judgment: if a website is mainly content, the content should be delivered directly to the browser first.

Astro’s Core Appeal

Astro’s own documentation describes it as a Web framework for content-driven websites. It is aimed at blogs, marketing sites, ecommerce content pages, documentation, portfolios, community sites, and similar use cases.

That positioning matters. Astro is not trying to cover every Web shape first and then offer static export as a secondary feature. It starts from content-driven sites.

For me, Astro’s appeal is this combination:

  • During development, it feels like modern frontend engineering: components, TypeScript, Vite, Markdown, MDX, and the npm ecosystem.
  • After build, the output is a high-performance static site made of standard HTML and CSS.
  • JavaScript is not the foundation of every page by default. It is progressive enhancement for interaction.

This is very different from traditional static site generators. Hexo, Jekyll, and Hugo can all turn Markdown into static HTML, but their development experience feels closer to a content system or a template system. Astro feels more like modern frontend engineering, without forcing the final output to carry the complexity of a frontend application.

That balance is comfortable.

Less JavaScript by Default

Astro is most often associated with islands architecture.

In Astro’s explanation, most of a page is rendered as static HTML. Only the areas that need interactivity or personalization run as JavaScript islands. By default, Astro components output HTML and CSS. They do not send a client-side runtime to the browser.

Most of the page stays static while a few interactive areas become JavaScript islands

The value here is not only better performance.

It changes the default assumption of frontend development back to something more reasonable: a page should be a document first, and only become an application where necessary.

In my own Astro usage, I actually do not use many React or Vue components inside Astro yet. I also do not use islands heavily. Many pages are just Markdown, Astro components, CSS, and a small amount of script. That does not weaken Astro’s value. It proves the default model is right.

On many official websites, very little client-side JavaScript is truly necessary: navigation menus, theme toggles, form validation, carousels, search boxes, and a few animations. Turning the whole site into a client-side app is not always a good tradeoff.

Astro’s strength is that one interactive component does not force the whole page to carry the cost of an application framework.

Content Is a First-Class Concern

Another important strength of Astro is its content model.

Content Collections make Markdown, MDX, JSON, and other content sources work with schemas, type hints, and validation. For blogs, documentation, official websites, and product content pages, this is much more reliable than simply walking through a folder of files.

Markdown, MDX, JSON, RSS, search indexes, and sitemaps organized as a content system

When maintaining a content-driven site for the long term, rendering a page is usually not the hard part. The harder parts are questions like these:

  • Are all article fields complete?
  • Are tags, categories, dates, and summaries consistent?
  • How should multilingual content be organized?
  • How should RSS, sitemaps, and search indexes be generated?
  • How should old URLs remain compatible?
  • How should images, code blocks, and external links stay maintainable over time?

Astro does not solve every content governance problem automatically, but it provides a better modern engineering base. Content is not merely attached to a template system. It becomes an input that can be handled by the type system, build process, and component model together.

When this blog moved away from Hexo, this was one of the things I cared about most. Markdown remained the content source, but the build, routes, feeds, search, llms.txt, multilingual structure, and deployment around Markdown could be organized in a more modern way.

Static First, But Not Static Only

Astro is easy to understand as a static site generator, but it has already moved beyond the traditional meaning of SSG.

Astro 6.0 was released in March 2026. It brought a built-in Fonts API, a stable Content Security Policy API, Live Content Collections, and a reworked dev server and build pipeline. Live Content Collections allow content from external CMSs or APIs to be fetched at request time, so not every content change has to trigger a full rebuild.

This shows that Astro is not stopping at “compile Markdown into HTML.” It remains static-first, but it leaves a path toward dynamic content, server rendering, and edge runtimes.

That direction matters for content-driven websites.

Many websites start out static, then gradually grow dynamic needs: subscription forms, user state, A/B tests, personalized recommendations, CMS updates, protected content, or small pieces of backend data. Starting with a full application framework can be too expensive early on. Choosing a purely static generator can make later expansion awkward.

Astro sits between the two: make the static pages good first, then add dynamic capabilities only where they are needed.

The Cloudflare Signal

Another important change is Astro’s relationship with Cloudflare.

In January 2026, Cloudflare published Astro is joining Cloudflare. Astro Technology Company joined Cloudflare, while Astro remained open source, MIT licensed, publicly governed, and committed to platform-agnostic deployment.

That is a positive signal for Astro’s long-term value.

Content-driven websites naturally fit Cloudflare’s infrastructure. Static assets, CDN, edge cache, Workers, Pages, R2, and D1 all point in the same general direction: make websites faster, closer to users, and easier to deploy. If Astro continues to improve Cloudflare runtime support while staying platform-agnostic, that is a good position for developers.

A content site moving closer to visitors through edge caching and deployment nodes

Of course, joining a large company does not automatically make a framework better. For an open source project, governance, community, roadmap, and real usage experience still matter most. But Cloudflare choosing Astro at least shows that content-driven sites, static-first architecture, and edge deployment are not niche directions.

How It Compares with Other Options

Is Astro the first choice for static sites today?

My answer is: if the site is content-driven and the developers mainly work in the JavaScript / TypeScript ecosystem, Astro can be the first choice. But it is not the only best answer for every static site.

Different static site tools branching from the same content decision square

Hugo is still very strong. It builds fast, ships as a single binary, and works well for large Markdown-heavy sites with little frontend customization. If a team does not need modern frontend components and mainly wants a stable, fast static generator, Hugo remains highly competitive.

Eleventy is more plain and closer to traditional templating. It has less framework feel and suits developers who want direct control over HTML output while keeping distance from frontend runtimes.

VitePress and Docusaurus are better fits for documentation sites. Versioning, sidebars, documentation navigation, search, code blocks, and theme conventions are important in documentation. For product docs, using a dedicated documentation framework is often more efficient.

Next.js, Nuxt, and SvelteKit can also export static sites, but they are more natural for application-style websites. If a project has login state, dashboards, complex forms, real-time data, heavy interaction, or server-side data flows, an application framework is usually a better fit. Static export is one of their capabilities, but it is not their cleanest starting mental model.

Traditional blog systems such as Hexo and Jekyll are still usable. They are mature, stable, rich in themes, and have clear migration paths. But for developers used to modern frontend engineering, Astro’s development experience, component model, and room for extension are easier to live with.

So the choice should not be based on which framework is the loudest. A better rule is:

  • If the site is mostly content, consider Astro, Hugo, or Eleventy first.
  • If it is mostly documentation, consider VitePress, Docusaurus, or Starlight first.
  • If it is mostly an application, consider Next.js, Nuxt, or SvelteKit first.
  • If it is mostly a blog and you want both modern frontend development and static output, Astro deserves serious consideration.

What Astro Is Not For

Astro’s strength comes from being content-first. That also means it is not the best choice for every scenario.

If a project is essentially an admin system, SaaS application, collaboration tool, complex editor, data dashboard, or anything that needs a large amount of client-side state from the homepage onward, Astro may not be the most natural choice. It can use React, Vue, and Svelte. It can also do server rendering. But the complexity of those projects usually does not live in “static page output.” It lives in application state, data flow, permissions, forms, real-time collaboration, and interaction structure.

In those cases, Next.js, Nuxt, SvelteKit, or even a traditional backend full-stack framework may be a better fit.

One common misunderstanding is to treat Astro as a “faster React framework.” I do not think that is accurate. Astro is closer to a content website framework. It allows React to be embedded where needed, but its core value is not making React faster. Its core value is making most pages not become React applications in the first place.

That distinction matters.

Why I Chose Astro

Moving from Hexo to Astro did not feel like switching to a trendier tool. It made the engineering model of static websites clearer.

With older static blog systems, I often felt a wall between the content system and frontend engineering. Writing posts, adjusting themes, editing templates, adding plugins, and handling builds often felt like working inside a relatively closed ecosystem.

Astro feels different. It respects the nature of static websites, but brings the development experience back into modern frontend engineering:

  • Pages are components.
  • Styles can be organized locally.
  • Markdown is the content source.
  • Builds are powered by Vite.
  • Client-side JavaScript is introduced only when interaction needs it.
  • Server or edge runtime capabilities can be added when dynamic behavior needs them.

That is why I keep choosing Astro for new official website projects.

For official websites and blogs, the most important thing is not that the technology stack looks complete. It is that users can open pages quickly, search engines can understand the content, content stays maintainable over time, deployment remains simple, and migration cost stays manageable.

Astro gives a direct answer to those needs.

Static Sites Are Not a Step Back

The return of static sites is not a regression in frontend engineering.

It is closer to the frontend community rediscovering that the Web’s basic capabilities are already strong. HTML can express content. CSS can handle a large amount of presentation. Browsers can render pages directly. CDNs can distribute content globally.

JavaScript is important, but it should not automatically become the foundation of every page.

This is where Astro’s value sits. It does not reject modern frontend development, and it does not push everything into a client-side application. It simply gives a better default:

Ship the page first. Enhance only where necessary.

For content-driven static websites, that is almost the simplest and most effective engineering principle.

So if I were building a blog, official website, portfolio, product landing page, marketing site, or content portal today, I would consider Astro first. Not because it is the most fashionable option, but because its default tradeoffs match the real needs of those sites.

Static sites did not disappear. They finally got a toolchain that feels right for modern developers.