Skip to content

Framework Review

Astro 5 Made Content Sites Calmer.

Static first. Dynamic only where it earns it.

Aidxn
Written by Aiden Wood Founder and Lead Design Engineer
Static page with one deferred island Most page content arrives as HTML. One personalised component can render later with a meaningful fallback, so it cannot delay the main reading path.

Static page with one deferred island

Most page content arrives as HTML. One personalised component can render later with a meaningful fallback, so it cannot delay the main reading path.

Browse Velocity Components

Astro 5 made a useful architecture easier to use: ship most marketing content as HTML, then add client or server work only where a real product need exists. That is more valuable than a framework popularity contest.

This is a retrospective, not a claim that Astro fits every product. It is strong for content, campaigns, portfolios, and commerce surfaces where reading speed matters. A dense product interface with persistent client state may be better served by an application focused framework.

Content collections are contracts for content

Astro collections let a project define a schema, load content from local files or remote sources, and query it with typed data. The useful outcome is not type jargon. It is catching malformed content before publishing and giving templates a predictable shape.

import { defineCollection, z } from 'astro:content';

const posts = defineCollection({
  schema: z.object({
    title: z.string(),
    description: z.string(),
    publishedAt: z.coerce.date(),
  }),
});

export const collections = { posts };

Keep the schema close to the publishing decisions that matter: title, summary, canonical path, dates, image alt text, and author. Do not force every field to exist when the design has no honest use for it.

Server islands are delayed server work

A server island is a server rendered Astro component marked with server:defer. With an adapter installed, Astro renders the page with fallback content, then fetches the island separately. The island can access server only data such as cookies. Its props must be serialisable, so functions and circular objects will not work.

---
import AccountSummary from '../components/AccountSummary.astro';
---

<AccountSummary server:defer>
  <p slot='fallback' aria-busy='true'>Loading account summary</p>
</AccountSummary>

Use this for genuinely personal or volatile information such as an account summary. Do not turn every card into a server island. Each deferred part adds another request and a fallback state to design, test, and maintain. Caching depends on your host and response policy, not on a magic framework switch.

View transitions need a reading fallback

Astro can add view transition navigation to multi page sites. Treat it as progressive enhancement. Pages still need to work as normal document navigations, focus needs a clear destination after a route change, and motion should respect a visitor who asks for less motion.

That keeps the effect pleasant rather than turning navigation into a fragile demo.

Where Astro fits

  • Marketing sites where content and image performance carry conversion.
  • Editorial sites with a clear content model and mostly static reading paths.
  • Campaign pages that use a few targeted interactive components.
  • Product pages where personal data is isolated behind a meaningful fallback.

Choose a different tool when most of the screen behaves like a long lived application. Framework choice is less important than being honest about data, state, and maintenance.

Velocity Components keeps that same bias: start with a clear, accessible building block, then add complexity because the product needs it.

Sources and further reading

Let us make some quick suggestions?

Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.