PageSpeed Insights scores for the new Next.js site on mobile and desktop
โ† All Build Logs
AEO & GEOFailures & FixesSEO & SearchFailed โ†’ Fixed

WordPress to Next.js: Why We Migrated Anyway

Build Log #3 of 3: The GetCoreTech Rebuild

โ˜† Save

What actually fixed it

Fixing WordPress problems and leaving WordPress are two different decisions. The indexing problem was already fixed, and the audit's problems could have been too. But I moved getcoretech.net to Next.js because static generation gave me more control over how pages are built and served, rather than relying on the existing WordPress setup and its plugin stack. The mobile PageSpeed score improved from 81 to 95 in our single runs, but the case for migrating rests on architecture as well as performanc

Bottom lineFixing a WordPress site and leaving WordPress are separate decisions, so migrate only when the underlying architecture is what keeps producing the problems.
On this page

Disclosure: getcoretech.net is my brother's site, which I now help run. All screenshots and Search Console data in this series are from that site.

Part of the series Rebuilding a Dead WordPress Site: The Full Series.

Recap: WordPress Could Have Been Fixed. So Why Move It?

By the end of the last two posts, getcoretech.net was in genuinely good shape. Post 1 covered the single WordPress setting that made the site invisible to Google for seven months, and the fix that got it indexed. Post 2 covered the deeper audit (lorem ipsum still live in production, broken links, a bare theme) and the custom admin panel I built to replace all of it.

The checkbox fix got the site indexed, and everything the audit found could have been fixed inside WordPress. The redesign and the move to Next.js shipped together in the relaunch on 12 September 2026.

So the obvious question is: if all of that could be fixed on WordPress, why go through a full migration to Next.js on top of everything else?

The short answer is that the first two posts fixed the symptoms. This post is about the underlying architecture those symptoms kept coming from.

What WordPress Was Still Fighting Against

Before the relaunch, I ran the old WordPress site through Google's PageSpeed Insights to get an honest read on where it stood technically, not just visually. (New to these reports? Here's how to read PageSpeed Insights diagnostics.) The scores themselves were reasonable, because Nitropack was doing real work. But the diagnostics underneath told a more specific story:

  • Image delivery โ€” flagged with an estimated 407 KiB (mobile) and 520 KiB (desktop) in potential savings from unoptimized images
  • Forced reflow โ€” JavaScript triggering layout recalculation mid-load (what forced reflow is), a common symptom in plugin-heavy WordPress builds where multiple scripts are manipulating the DOM independently
  • LCP request discovery โ€” the page's largest visible content wasn't being prioritized early enough in the load sequence (why request discovery matters for LCP)
  • Network dependency tree warnings, tied to that same load-order problem
  • More than 4 preconnect connections โ€” flagged directly by Google's own tooling, which explicitly recommends using preconnects sparingly (how many preconnect hints is too many). This one probably comes from plugin stacking: Nitropack, plus whatever other plugins were running, probably each adding their own preconnect hints without any coordination between them

I walk through the same report, item by item with real data.

PageSpeed Insights diagnostics for the old WordPress site, mobile
PageSpeed Insights diagnostics for the old WordPress site, mobile 1

PageSpeed Insights diagnostics for the old WordPress site, mobile

PageSpeed Insights diagnostics for the old WordPress site, desktop

PageSpeed Insights diagnostics for the old WordPress site, desktop

Some of these, like image delivery, can be fixed inside WordPress. Others, like forced reflow and the preconnect count, trace back to how a plugin stack assembles a page.

The Real Numbers (Being Honest About What They Show)

Here's the actual before-and-after on mobile, plus where the new site stands on desktop, and I want to be upfront that it isn't a dramatic story.

  • Old WordPress site (mobile): Performance 81, Accessibility 94, Best Practices 100, SEO 100
  • New Next.js site (mobile): Performance 95, Accessibility 96, Best Practices 100, SEO 100
  • New Next.js site (desktop): Performance 99, Accessibility 96, Best Practices 100, SEO 100
PageSpeed scores for the new Next.js site desktop

PageSpeed scores for the new Next.js site desktop

PageSpeed scores for the new Next.js site mobile

PageSpeed scores for the new Next.js site mobile

Mobile performance improved from 81 to 95 in our single runs โ€” a 14-point increase. That's encouraging, but a single run on each site doesn't establish how much of that improvement came from the migration itself. PageSpeed scores vary between tests, and Nitropack was already doing legitimate optimization work on the old site. This was never a case of "before was broken, after was perfect" on mobile; the architectural reasons for migrating still matter independently of the score.

On desktop, the new site scores 99. Accessibility improved slightly on mobile too, from 94 to 96.

If the migration were justified purely by the Lighthouse score jump, the mobile number alone would make a fairly weak case. It isn't the main reason I moved. The main reasons are structural, and a single performance score doesn't capture them.

The Real Reasons I Moved

A caching plugin manages symptoms. Static generation removes the cause. Nitropack was doing exactly what a good caching/optimization plugin should do โ€” it was compensating for a page-assembly process that generates real overhead on every request. That's genuinely useful, and it's also a ceiling. It can hide the cost of plugin-driven JavaScript and layout work, but it can't eliminate that cost, because the underlying page is still built the same way underneath the caching layer. A statically generated Next.js site sidesteps the problem at the source: the page is already built ahead of time, so there's no plugin-stack assembly happening on each visit for a plugin to compensate for.

No plugin dependency stack to maintain or break. Every plugin added to a WordPress site is a moving part with its own update schedule, its own compatibility assumptions, and its own way of quietly interacting with every other plugin installed alongside it. The preconnect warning in the diagnostics above is a likely example of that, with several plugins each adding hints that look reasonable alone. A custom-built Next.js site has no plugin stack in that sense. What's running is what was actually written for this site, nothing more, which means there's a much smaller surface area for something to silently degrade over time the way the indexing setting did in Post 1.

Full ownership, closing the loop from Post 2. The custom admin panel in the last post exists so my brother isn't dependent on a developer for basic content control. Leaving WordPress entirely extends that to the infrastructure. There's a smaller surface for a setting like the one in Post 1 to hide in, though a static site can still ship a stray noindex, so checking Search Console stays part of the routine.

Fewer moving parts, more predictable deploys. The Publish/Rebuild flow from Post 2 is part of this too โ€” every content change goes through an explicit rebuild step (what "rebuild to publish" means) rather than going live instantly and unpredictably the way a WordPress save does. That's a small trade-off in immediacy for a real gain in predictability: what gets published is always the result of a deliberate step, not a background plugin interaction nobody remembers making.

When WordPress Is Still the Right Call

To be fair to WordPress, because this isn't a "WordPress is bad" post: it's still a reasonable choice for a lot of situations. If you need a huge plugin ecosystem, a non-technical owner who wants a familiar interface, a tight budget, or you simply don't need custom admin functionality, WordPress remains a legitimate, well-supported option. Plenty of fast, well-run sites are built on it.

Where it's worth reconsidering is closer to what happened here: plugin bloat accumulating over time, recurring performance issues that a caching plugin can only partially paper over, a need for genuinely custom admin tooling, or a situation where technical debt and neglected maintenance have already caused real, measurable damage โ€” as it did for seven months on this site. For the general trade-offs, here's WordPress vs. Next.js with real migration data.

The Whole Arc

A site sat invisible to Google for seven months because of one setting. Fixing it got the site indexed, but a deeper audit found it was still unfinished underneath: placeholder content, broken links, no real design. I rebuilt it with a proper theme and a custom admin panel that gave my brother independent control, and moved it off WordPress onto Next.js, not because the fixes didn't work but because they were solving symptoms of an architecture that would likely keep producing new ones.

You can see the finished result at getcoretech.net.

This is Post 3 of 3 in Rebuilding a Dead WordPress Site: The Full Series, on rebuilding getcoretech.net. Post 1 covers the checkbox that kept the site out of Google. Post 2 covers the audit and the custom admin panel.

What I took away from this

Mobile performance improved from 81 to 95 in our single runs. That's a meaningful difference in the recorded scores, but the migration can't be justified by that comparison alone. The main reasons were structural, and repeated tests would be needed to establish how consistent the performance improvement is.

FAQ

It depends on what's driving the decision. If you're chasing a Lighthouse score alone, a well-optimized WordPress site with good caching can get you most of the way there without a migration. If you're dealing with recurring plugin conflicts, a need for custom admin functionality, or long-term maintainability concerns, Next.js is worth serious consideration.

Not in every case, and the result depends on the site and how it's built. In this project, the mobile PageSpeed score improved from 81 to 95 in our single runs. That's encouraging, but one run on each site isn't enough to establish a consistent performance advantage.

It requires more technical knowledge to manage day-to-day, since it doesn't come with a built-in admin interface the way WordPress does. That's exactly why I built a custom admin panel as part of this migration โ€” to give a non-technical site owner the same practical ease of use without the underlying plugin dependency stack.

In my case, it was removing the accumulation of small, hard-to-trace issues that come from plugin stacking โ€” like the preconnect warning I found in this site's diagnostics โ€” rather than any single dramatic performance win.

Want something like this built for your business?

See AEO & GEO services

Related Build Logs

Comments

No comments yet โ€” be the first.