React vs Next.js: How Switching My Portfolio Improved SEO, Performance, and Core Web Vitals

December 2, 2025 (1y ago)

React vs Next.js: How Switching My Portfolio Improved SEO, Performance, and Core Web Vitals by Over 40%

And how a simple plan to add a blog turned into a full-blown SEO glow-up.

When I first rewrote my personal portfolio with Next.js, the motivation wasn’t performance, search rankings, or achieving guru-level mastery of web vitals.
It was much simpler:

👉 I just wanted to add blogs to my website.

But what happened next was… unexpected.

After deploying the new Next.js version on Vercel and running a Lighthouse audit, I discovered that my site’s SEO, performance, accessibility — basically everything — had skyrocketed.

So in this article, I’m sharing the exact React vs Next.js Lighthouse results, the percentage improvements, and why this migration unintentionally fixed my Core Web Vitals.

Lighthouse score using Next.js showing almost-perfect performance score of 99
Almost perfect performance score on Lighthouse useing Next.js

🚀 Why I Originally Built My Portfolio in React

Like many developers, I started with a classic React + GitHub Pages setup. It was simple, familiar, and perfect for a static portfolio.

Lighthouse score using ReactJS showing performance score of 92
I got an average 92 performance score using ReactJS

But when I decided to start writing blogs, things got messy:

  • No built-in routing for dynamic pages
  • Manual SEO tags
  • Everything was client-rendered
  • GitHub Pages wasn’t ideal for serving blog content

So I rebuilt everything in Next.js, mainly to get file-based routing and automatic SEO metadata.

I wasn’t expecting a 40%–60% improvement in performance as a side effect — but here we are.

📊 Lighthouse Scores — React vs Next.js (Real Data)

I ran Lighthouse audits on both versions of my portfolio:

| Metric                       | React   | Next.js | Improvement    |
| ---------------------------- | ------- | ------- | -------------- |
| **First Contentful Paint** | 1128 ms | 540 ms | **52% faster** |
| **Largest Contentful Paint** | 1439 ms | 767 ms | **47% faster** |
| **Speed Index** | 1508 ms | 552 ms | **63% faster** |

That’s not a small “oh neat” improvement — that’s a complete makeover.

If my React site was a sedan, the Next.js rebuild turned it into a Tesla set to ludicrous mode.

🧠 Why Next.js Performed So Much Better

Here’s what actually gave Next.js the advantage — even without doing anything crazy in the code.

✅ 1. Server-Side Rendering (SSR) & Static Optimization

My React build was fully client-rendered, meaning:

  • The browser downloaded a large JS bundle
  • Then React hydrated everything
  • Then the page became usable

Next.js, on the other hand:

  • Pre-rendered the HTML
  • Shipped less JavaScript
  • Showed content immediately
Google’s crawler loves HTML. Next.js served Google HTML.
👉🏽 You can guess the rest.

✅ 2. Vercel’s Global Edge Network

GitHub Pages is great for hosting static files, but:

  • No aggressive global CDN
  • No image optimization
  • No smart caching layer

Vercel serves assets from edge nodes worldwide. This alone dropped my FCP by over 500ms.

✅ 3. Automatic Image Optimization with next/image

Even using images “normally,” Next.js silently:

  • Converts formats
  • Lazy loads
  • Resizes
  • Compresses

React has none of this out of the box.

✅ 4. Route-Level Code Splitting

React + GitHub Pages = one big JavaScript bundle.

Next.js =

  • smaller chunks
  • faster hydration
  • less JS blocking the UI

It’s like carrying groceries in multiple small bags instead of one bag that’s trying to destroy your fingers.

✅ 5. File-Based Routing + Metadata API → Better SEO

The new blog automatically:

  • Generates metadata
  • Improves crawlability
  • Creates predictable URL structures
  • Allows pre-rendering of content

All without touching react-helmet.

🔗 Live Links and Code

React Portfolio (GitHub Pages)

Next.js Portfolio (Vercel)

Both are public — feel free to view the code or run your own audits.

🧩 What I Learned from Accidentally Improving My SEO

I migrated to Next.js because:

  • It’s great for blogs
  • Developer experience is clean
  • Routing is effortless

But what I learned afterward is even more valuable:

Next.js isn’t just a framework — it’s an SEO upgrade.

Performance, Core Web Vitals, and Lighthouse scores improve simply by:

  • Using SSR/SSG
  • Using Vercel
  • Using automatic optimizations

I didn’t write special optimizations, redesign my site, or tune Webpack. Next.js simply did what React (alone) couldn’t.

🎯 Final Thoughts (And Why You Might Want to Switch Too)

If you’re building:

  • A portfolio
  • A blog
  • A landing page
  • A content-heavy site
  • Anything SEO-sensitive

…there’s almost no reason not to use Next.js in 2025.

You get SEO, performance, routing, metadata, and edge rendering right out of the box, without the yak-shaving.

React is amazing — no hate.
But for production sites? Next.js just makes everything… better.

If you want higher Lighthouse scores without doing 100 hours of optimization, Next.js might be the cheat code you’re looking for.

Ali Farooqi

About the Writer

Ali is a software engineer based in Hong Kong who builds cloud-powered, high-performance web apps. He writes about React, Next.js, DevOps, SEO, and building modern portfolios that scale. When not coding, he’s probably hiking mountains or testing new cloud infra ideas.

Originally posted on Medium →