Why I Rebuilt My Portfolio with Astro

August 7, 2026 (1d ago)

I just rebuilt my personal site. For a while I ran a Next.js portfolio and a separate Docusaurus blog on a different subdomain. It worked, but it was two codebases, two design systems, and two SEO problems pretending to be one brand.

Here’s why I moved to a single Astro site (using the Starfolio template) and what changed.

The problem with my old setup

Two problems drove the migration:

  1. Split domain authority. My portfolio lived on samyakjain.dev and my blog on blog.samyakjain.dev. Every link, article, and bit of content on the subdomain doesn’t share link equity with the main domain as strongly as it would if it lived at samyakjain.dev/blog. Consolidating all content on one domain is one of the highest-leverage SEO moves a personal site can make.

  2. A content site carrying an app framework. My portfolio shipped the React runtime on every page even though the pages were 95% static text. It wasn’t slow by accident — it was slow by architecture.

Why Astro

Astro’s core idea is that most pages should be HTML, not JavaScript. It ships zero JavaScript by default and only hydrates the specific components you mark as interactive (“islands”). For a portfolio and blog, that means:

  • Better Core Web Vitals by default. LCP, INP, and CLS are confirmed Google ranking signals. A mostly-static Astro page starts with a clean score instead of a runtime tax to pay down. Typical Lighthouse scores: 95-100.
  • Crawlers and AI models see the content immediately. The HTML on the wire is the page. No JS execution needed to discover content — which matters more as AI search surfaces (ChatGPT, Perplexity) become a real traffic channel.

SEO changes I made on top of the template

Most templates — including this one — get you 80% of the way. I closed the remaining 20%:

  • Server-rendered homepage. The template rendered the homepage with client:only, which means the HTML was empty until JS ran. I switched to client:load so the full homepage is in the static HTML, then hydrates.
  • Pure static output. No server adapter. Every page is pre-rendered to HTML at build time and can be served from any static CDN for free.
  • RSS feed. A blog without RSS is a blog nobody can subscribe to. Now at /rss.xml.
  • Structured data. Person + WebSite JSON-LD on the homepage, BlogPosting on every post.
  • robots.txt and sitemap wired to the real production URL.
  • Schema-enforced metadata. Titles are capped at 70 characters and summaries at 160 so search results never get truncated by a template default.

The verdict

If your site is mostly words and pictures — a portfolio, a blog, a marketing page — Astro is the honest choice in 2026. It’s not a niche tool anymore; it’s the default for content-first sites, with a huge theme ecosystem behind it.

Want the full setup details? The whole stack is open source — check the repository for the config, docs, and content guides.