>_felipecm.dev
cd ~/blog
Β·2 min read

State of the Art Frontend: Astro 5, Island Architecture & Zero-JS Core

Why modern developer blogs should ditch heavy Single Page Application runtimes in favor of Islands Architecture, content-driven static generation, and sub-10ms FID.

The web development landscape has matured. For years, content-heavy websites like portfolios, technical documentation, and developer blogs carried the unnecessary burden of heavyweight Single Page Application (SPA) client runtimes. Every page view required downloading mega-sized JavaScript bundles, hydrating the entire DOM tree, and burning battery life on mobile devices.

With Astro and the Islands Architecture, we invert this paradigm completely: HTML-first, Zero JavaScript by default, with isolated islands of interactivity only when strictly necessary.

The Zero-JS Content Core

When you read a blog post or technical article, 98% of the page is pure typography, images, and highlighted code snippets. Transporting Megabytes of client-side framework code just to render text is an anti-pattern.

Astro renders your Markdown and components on the server or at build time into pure, semantic HTML and CSS:

// Astro Component: Server-side data fetching with zero client JS
---
import { getCollection } from 'astro:content';
import BlogPostCard from '@/components/BlogPostCard.astro';

const posts = await getCollection('blog', ({ data }) => !data.draft);
const sortedPosts = posts.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
---

<section class="grid gap-6 md:grid-cols-2">
  {sortedPosts.map((post) => (
    <BlogPostCard post={post} />
  ))}
</section>

Measuring Real-World Web Vitals

By adopting static generation and selectively hydrating only UI controls (like our runtime Theme Selector and Command Palette), we consistently hit:

  • First Contentful Paint (FCP): < 0.3s
  • Largest Contentful Paint (LCP): < 0.6s
  • Cumulative Layout Shift (CLS): 0.00
  • Interaction to Next Paint (INP): < 15ms
# Lighthouse Audit CLI verification
npx lighthouse-ci collect --url="https://felipecm.dev"
# Performance: 100/100 | Accessibility: 100/100 | Best Practices: 100/100 | SEO: 100/100

Island Architecture in Practice

In this blog, the theme switcher is an isolated island:

<!-- Client-side island with immediate hydration for instant theme switching -->
<ThemeSelector client:idle />

Everything elseβ€”the post content, code blocks, navigation links, and SEO tagsβ€”ships as blazing-fast, cacheable static HTML. In the next article, we will examine how our Omarchy dynamic theme engine works at runtime without flash of unstyled content (FOUC).

FM

Felipe Miranda

Software engineer focused on terminal ergonomics, low-latency architectures, and Astro.