All Posts
Building with Astro: A Modern Web Framework
astro web development javascript framework

Building with Astro: A Modern Web Framework

Building with Astro: A Modern Web Framework

When it came time to rebuild my personal website, I had countless options. React, Next.js, Gatsby, Hugo, Eleventy… the list goes on. After careful consideration, I landed on Astro, and I couldn’t be happier with the choice.

Why Astro?

🚀 Performance First

Astro’s “zero JavaScript by default” philosophy means your pages ship with minimal client-side JavaScript. This translates to blazing-fast load times and excellent Core Web Vitals scores.

// Astro components are server-rendered by default
---
const greeting = "Hello, World!";
---

<h1>{greeting}</h1>

🏝️ Island Architecture

Need interactivity? Astro’s Islands let you hydrate specific components while keeping the rest of the page static:

<StaticHeader />
<InteractiveSearch client:load />
<StaticContent />

📝 First-Class Markdown Support

For a blog, content authoring experience is crucial. Astro’s built-in Markdown and MDX support makes writing a joy:

  • Frontmatter for metadata
  • Syntax highlighting with Shiki
  • Custom components in MDX

My Setup

Here’s what my Astro configuration looks like:

import { defineConfig } from 'astro/config';
import react from '@astrojs/react';
import mdx from '@astrojs/mdx';

export default defineConfig({
  integrations: [react(), mdx()],
});

The Results

Since switching to Astro:

MetricBeforeAfter
First Contentful Paint2.4s0.8s
Largest Contentful Paint3.1s1.2s
Total Bundle Size450KB45KB

Conclusion

If you’re building a content-focused website, I highly recommend giving Astro a try. The developer experience is excellent, and the performance benefits are substantial.

Have questions about my setup? Feel free to reach out!

© 2026 Vladimir Vojnic Hajduk. All rights reserved.