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:
- Fast — no loading spinners, instant page loads
- Easy to update — write in Markdown, not JSX
- Cheap to host — static files on object storage
- 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 buildand I have adist/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.