Skip to content
Go To Agency

WordPress to Next.js Migration: No Plugins, No Attack Surface

Your WordPress site is a ticking time bomb of security patches, plugin conflicts, and slow load times. We migrate everything to Next.js, preserving your SEO, your content, and your sanity.

Written reply within 24 business hours4.9/5 from 35 reviewsDelivery in 1-3 weeks

WordPress is costing you more than you realize

Between hosting fees, premium plugins, security monitoring, and developer hours spent on updates, WordPress drains your budget. Meanwhile, your visitors experience 3-5 second load times that kill conversions and hurt your Google rankings.

11,334
New WordPress ecosystem vulnerabilities in 2025 (Patchstack)
2.5 s
Google's good LCP threshold, measured at the 75th percentile
52%
of WordPress plugins have known vulnerabilities
Unmapped URLs
What actually sinks a migration's rankings

A complete migration, not just a redesign

Content & Data Migration

Every post, page, image, and metadata is extracted, cleaned, and restructured for your new Next.js architecture. Nothing is left behind.

301 Redirect Mapping

Comprehensive URL mapping ensures every old URL redirects to its new equivalent. Your Google rankings and inbound links are fully preserved.

Headless CMS Integration

Replace the WordPress editor with a modern headless CMS like Sanity or Contentlayer. Your content team keeps editing easily without the WordPress baggage.

Performance Architecture

Static generation, incremental static regeneration, and edge caching deliver sub-second load times on every page across every device.

SEO Preservation & Enhancement

Meta tags, Open Graph data, structured markup, and sitemaps are migrated and improved. Core Web Vitals scores jump from red to green.

Zero-Downtime Cutover

We build and test the new site in parallel, then switch DNS with zero downtime. Your visitors never experience an interruption.

Migration results from real projects

1:1
Old URL to new URL mapping
Always
Redirect map written before go-live
URL by URL
Redirect map
Monthly cost
Itemised in the quote

WordPress to Next.js migration packages

Brochure Migration

On quote
  • Up to 20 pages migrated
  • Full 301 redirect mapping
  • Responsive design rebuild
  • SEO metadata preserved
  • Vercel deployment
  • Delivered in 2-3 weeks
Plan my migration
Recommended

Business Migration

On quote
  • Up to 100 pages migrated
  • Headless CMS integration
  • Blog with categories & tags
  • Custom functionality rebuild
  • API integrations
  • 3 months post-migration support
Plan my migration

Enterprise Migration

Custom
  • Unlimited pages
  • WooCommerce migration
  • Multi-site consolidation
  • Custom plugin replacement
  • Performance SLA
  • 12 months dedicated support
Plan my migration

Leaving WordPress for Next.js: what actually breaks, and when to stay put

You are probably not shopping for a framework. You are tired of patching plugins, of a site that stays slow whatever cache you install, and of an admin nobody wants to open. Next.js fixes some of that permanently and hands you a different set of constraints in exchange. This page covers both: the redirect work that decides whether your rankings survive, and the cases where staying put is the better call.

Why your WordPress site stays slow whatever caching plugin you install

A full-page cache in front of WordPress fixes exactly one thing: time to first byte for anonymous visitors. It does nothing for the metrics that actually move Core Web Vitals, because those are decided in the browser. A typical five-year-old install ships jQuery, jQuery Migrate, and a separate CSS and JS bundle from every active plugin, on every template. Plugin authors cannot know which page you are on, so they enqueue everywhere. The theme adds one render-blocking stylesheet covering every layout it supports, most of which you never use. Then there is the database side, which caching hides until it cannot. Autoloaded rows in wp_options accumulate quietly: install and remove thirty plugins over five years and the orphans still load on every request. wp_postmeta grows without a useful index once you have a real catalogue. admin-ajax.php is a general-purpose endpoint that bypasses the page cache by design. wp-cron fires on visitor requests, so your worst page load belongs to whoever happened to arrive when a scheduled job was due. The failure mode is always the same. The cache holds beautifully in a synthetic test, then a session cookie appears (a logged-in user, a cart, a consent banner that varies the response) and every request falls through to PHP. That is why field data never matches the number you screenshotted. It is structural, not a misconfiguration, and no plugin fixes it.

What you gain, and what you genuinely give up

The gains are real and mostly permanent. You control the rendering path, so you decide per route whether a page is built once, revalidated on a schedule, or rendered per request. Images go through one pipeline instead of four competing plugins. The security surface shrinks to your own code plus your CMS vendor, which ends the weekly ritual of reading changelogs for plugins you installed once in 2021 and can no longer safely remove. The losses are just as real, and people selling migrations tend to skip them. The reflex of solving a problem by installing a plugin disappears. A booking flow, multi-currency pricing, a members-only area, a form with conditional logic: each becomes a development ticket with a review and a deploy, not a purchase on a marketplace. Your marketing lead can no longer drop a tracking script into the site alone on a Friday afternoon, unless you wire up a tag manager for exactly that. You also need a process you may not have today: a git repository, pull requests, preview deployments, and one person on your side who can say yes to a change. The cost structure moves too. Instead of one managed hosting bill and a few annual plugin licences, you pay for build and hosting infrastructure, a CMS plan if you use a hosted one, and developer time for things that used to be a checkbox. For a content site with a few forms, that trade is usually worth it. For a site held together by fifteen paid plugins doing real work, run the numbers before anyone writes code.

Three routes out: headless WordPress, a new CMS, or a frozen archive

Route one keeps WordPress as a headless backend and replaces only the front end. Next.js reads from the REST API or WPGraphQL, editors keep the admin they know, Advanced Custom Fields keeps working, and publishing triggers on-demand revalidation through a webhook. Lowest risk when the editorial team is large or the content model is genuinely custom. The catch: you still run PHP and MySQL, you still patch core, draft previews need an authenticated path of their own, and wp-admin belongs behind an IP allowlist or basic auth rather than on the open internet. Route two extracts the content once into a modern CMS (Sanity, Payload, Strapi, or a git-backed MDX repository) and retires WordPress. Cleanest end state, most work up front. The WXR export is lossy in ways that only surface once you open the file: shortcodes arrive as raw text, and page builders are the real problem. Elementor, Divi and WPBakery store layouts as serialised data in postmeta rather than as HTML, so a naive export produces unusable content. The workable approach is to pull rendered HTML from the REST API, normalise it with a script, then fix the remainder by hand. Route three freezes the old site: render the historic archive as static pages, keep every URL alive, publish everything new in the new system. That suits sites where ten years of posts still earn traffic but nobody will edit them again. Which route fits is mostly settled by two questions: how many people publish, and whether a page builder owns your layouts.

Redirects and URL families are where these migrations actually break

Rankings do not vanish because you changed framework. They vanish because a URL that earned links now returns a 404, or takes two hops to reach anything useful. Start from data, not from the sitemap: a full crawl of the live site, sixteen months of URLs out of Search Console, and server logs if you can get them. The sitemap will not contain the pages that quietly earn your backlinks. WordPress generates URL families people forget. Archive pagination at /page/2/. Category, tag and author archives. Attachment pages, one per uploaded image, which some themes have let Google index for years. Feed URLs at /feed/ and /comments/feed/, still pulled by aggregators. Legacy permalinks such as ?p=123. Parameter noise such as ?replytocom=. And media under /wp-content/uploads/, hotlinked elsewhere and ranked in image search: keep those paths byte-for-byte identical if you can, because rewriting them is the easiest way to lose traffic you never knew you had. Two details cause more damage than they should. Trailing slashes: WordPress canonicalises to a trailing slash, Next.js defaults to none, and if you do not decide explicitly, every inbound link becomes a redirect hop. Case sensitivity: an Apache origin often served /About-Us and /about-us alike, a Node origin will not. Everything maps with a 301, never a 302, never a chain. Past a few hundred rules, hold them in a lookup table or at the CDN edge instead of one long ordered list in next.config, and read the 404 logs daily for the first two months.

When staying on WordPress is the right call, and when not to hire us

Some sites should not move. If you run WooCommerce with plugins handling tax rules, shipping logic, subscriptions or B2B pricing tiers, rebuilding that is a multi-quarter project with no guaranteed revenue on the other side. A hosted platform is often the honest answer: Shopify charges a monthly plan fee plus a share of each transaction, and at the time of writing the entry tiers are roughly a few tens of dollars a month, which usually beats owning the same logic in code. If the real complaint is that the admin has become a mess, a cleanup can be far cheaper than a migration. Remove twenty plugins, rebuild the theme properly, move to better hosting. Similar outcome, a fraction of the work. If your traffic is modest and the site functions, a migration will not create demand: fix the offer and the content first. And if you publish dozens of times a day with editorial roles, embargoes and a newsroom workflow, WordPress tooling is mature and whatever replaces it will not be, at least not soon. Do not hire us if nobody on your side can review a pull request or approve a deploy, and you have no plan to hire anyone who can. You would swap dependence on a theme developer for dependence on us, which is no improvement. Do not hire us if you want calls, video calls, standups or someone on site: we work in writing only, and that is policy rather than a scheduling preference. Do not hire us if you need a fixed price before scope exists, or if the site has to be live in ten days. Migrations with real URL history do not compress well.

Two people in Dijon, every decision in writing

Go To Agency is Robin Monteiro (full-stack, Next.js and React) and Florian Loppion (digital marketing), working from 9 rue Jean-Jacques Rousseau in Dijon, France. That is the whole company and the only office. There is no account manager between you and the person writing your redirect map, which is the main reason clients outside France work with us at all. Everything happens in writing, by email, with a reply inside 24 business hours. No calls, no video calls, no scheduled slots. For an international client that removes the thing that usually makes remote work painful: nobody in California takes a 3am call, nobody in Bangalore waits for a European afternoon. Work continues while you sleep and a written answer is waiting when you start. The second benefit shows up months later. Why did /blog/ become /insights/? Why is that category redirected to a page instead of an archive? The answer sits in a searchable thread, not in somebody's memory of a call. Approvals happen on a preview deployment: you get a URL, you click through, you reply with what is wrong. What you do differently: batch your questions instead of firing them one at a time, send the actual artefact (the URL list, the credentials, the export file) rather than describing it, and accept that a message sent Friday evening Paris time is answered Monday. You own the repository, the hosting account, the CMS account and the domain from day one. Our client work, from Mediavocats and Vectosolve to Chouchou Ribeyre, Au Petit Detail and LB Athletic, runs on exactly this process.

No. We implement comprehensive 301 redirects for every URL, preserve all meta tags and structured data, and improve your Core Web Vitals. Google typically rewards the performance improvement with better rankings within weeks.

A standard brochure site takes 2 to 3 weeks. A larger site with a blog and custom features takes 4 to 8 weeks. Enterprise sites with WooCommerce or multi-site setups require 2 to 3 months. We provide a detailed timeline upfront.

Absolutely. We integrate a headless CMS with a visual editor that's often easier to use than WordPress. Your content team can publish pages and blog posts through a clean, modern interface without touching code.

Most WordPress plugins exist to compensate for WordPress limitations. In Next.js, features like contact forms, SEO, caching, and image optimization are built natively or implemented with lightweight libraries. We audit every plugin and build equivalent functionality.

We quote per project and publish no prices, because the same page count can be a two-week job or a three-month one. What actually moves an estimate: how many URLs carry traffic or links, whether a page builder such as Elementor owns your layouts (the single biggest driver), how many custom post types and ACF field groups exist, the number of third-party integrations to rebuild, and whether you keep WordPress headless or change CMS entirely. Send the site URL and a Search Console export and you get a written estimate instead of a vague range.

Not inherently. Google renders JavaScript, and a well-built WordPress site on a lean theme ranks perfectly well. What Next.js gives you is control: server-rendered HTML per route, real command of metadata, structured data and canonicals, and a speed ceiling WordPress cannot reach once plugins pile up. It also gives you new ways to fail. A Next.js site that renders its content client-side only, or ships everything as a client component, is worse for crawling than the WordPress site it replaced. The framework does not do the work for you.

Yes, and it is often the right call. Next.js consumes the WordPress REST API or WPGraphQL, your editors keep the interface and workflow they know, ACF field groups keep working, and a publish webhook triggers on-demand revalidation so changes appear in seconds rather than at the next build. The trade-off is that WordPress stays alive, so core and plugin patching stays on someone's plate, and wp-admin should sit behind an IP allowlist or basic auth instead of being publicly reachable.

Less, but not nothing, and anyone claiming otherwise has not run one of these for two years. Node has a release cadence, Next.js ships a major version roughly once a year with genuine migration notes, and your dependencies need updating like any codebase. The difference is the nature of the work: planned upgrades you schedule, instead of an urgent plugin patch on a Sunday because a vulnerability was published. Hosting and CMS plans stay as recurring costs, priced per seat or per usage depending on the vendor.

4.9/5 sur 35 avis clientsRead what our clients say

Break free from WordPress today

Get a free migration assessment with a page-by-page plan, timeline, and cost estimate for your WordPress to Next.js migration.

Get my migration plan
Free quote