For a long time, my personal website was built with Angular. Back when I first set it up, Angular gave me everything out of the box — routing, state management, and a familiar component-based structure. It served its purpose for showcasing my work, and honestly, I didn’t think too much about performance or content strategy.
But over time, things changed — both in the web ecosystem and in how I viewed my personal site.
The Problem with Angular for My Use Case
Angular is powerful, no doubt. But it’s also opinionated and heavy, especially for something like a portfolio site or a blog. Here’s what I started to notice:
- Too much JavaScript for static pages: Even the simplest “About Me” section ended up bundled with way more JS than needed.
- Slower initial load times: Core Web Vitals weren’t happy. Angular’s client-side hydration just wasn’t ideal for mostly static content.
- Content workflow pain: I wanted to write blogs in Markdown or MDX and just push them via Git — not spin up a CMS or edit inline HTML templates.
- Overkill architecture: Maintaining routing, lazy loading, and global services felt unnecessary for a portfolio.
In short, I was maintaining an SPA for what was basically a static site with occasional interactivity. That didn’t sit right anymore.
Why Astro?
I started exploring Astro and was immediately drawn in by its promise:
“Build fast content-focused websites, with less client-side JavaScript.”
And it delivered.
Key reasons I moved to Astro:
- Zero JS by default: Astro ships static HTML by default, with opt-in islands of interactivity. Pages now load lightning-fast.
- MDX support: Writing posts became as simple as dropping Markdown files in a folder. No build configs or CMS setup.
- Component flexibility: I could still use React or Vue components wherever needed, without buying into their entire runtime.
- Developer experience: Simpler file structure, fast dev server, and no unnecessary ceremony.
It felt like Astro was built for developers like me — those who want modern DX without turning every project into a JavaScript-heavy SPA.
The Migration Experience
Rebuilding the site was surprisingly smooth:
- I rewrote static pages in
.astro
files — most HTML just worked. - Used TailwindCSS for styling (which plays nicely with Astro).
- Ported reusable bits from Angular into lightweight components or partials.
- Integrated MDX for blog posts and added a clean route-based file system.
- Deployed on Netlify with minimal config.
The result? A lighter, faster, cleaner site — both for users and for me as the builder.
Final Thoughts
Angular is still a fantastic choice for complex enterprise apps. But for personal websites, content-heavy projects, or anything that doesn’t need a full SPA — Astro hits a sweet spot.
Sometimes, the best tech decisions are the ones that make your life simpler.
If you’re maintaining a portfolio or blog using a full-blown framework, consider giving Astro a spin. You might end up wondering, like I did:
Why didn’t I do this earlier?