Back to Blog

Why I Chose Astro for My Personal Site

A breakdown of why Astro's static-first, MDX-friendly approach was the perfect fit for a personal portfolio and blog.

The Problem

I needed a personal site that was:

  1. Fast — no loading spinners, instant page loads
  2. Easy to update — write in Markdown, not JSX
  3. Cheap to host — static files on object storage
  4. Flexible — support rich components when needed

Why Not Next.js or Gatsby?

Both are great frameworks, but they ship JavaScript by default. For a content-heavy portfolio, I don’t need client-side hydration on every page.

Ship less JavaScript. Your readers will thank you.

Enter Astro

Astro’s “islands architecture” means I get:

  • Zero JS by default — pages are pure HTML + CSS
  • MDX support — Markdown with components when I need them
  • Content Collections — type-safe frontmatter with Zod schemas
  • Static output — one pnpm build and I have a dist/ folder ready for Cloudflare Pages

The Stack

// astro.config.mjs
export default defineConfig({
  site: "https://jacky-wong9273.com",
  output: "static",
  integrations: [mdx()],
});

Simple. No databases, no serverless functions, no build pipelines that take 5 minutes.

Deployment

The static output is deployed to Cloudflare Pages, which handles the CDN, SSL, and CI/CD automatically. Every push to main triggers a build. Total monthly cost: $0.


What’s your preferred stack for personal sites? I’d love to hear about it.