Services

Drupal to Next.js Migration for Content‑Heavy, Headless Platforms

Use this page if Drupal still owns the content operation, but delivery expectations now need a faster, more flexible Next.js front end.

Move a Drupalled estate to Next.js without losing aliases, preview behaviour, or SEO continuity on contentheavy routes.

Typical symptoms

  • The current Drupal front end is constraining performance or modern delivery practices.
  • Teams need a more flexible React or Next.js experience on top of structured content.
  • Preview, aliases, or content model translation are increasing migration risk.

Likely causes

  • The move has not yet separated Drupal content responsibilities from frontend delivery concerns.
  • Path aliases, metadata, and rendering requirements are more complex than a theme rebuild suggests.
  • The migration needs clearer planning around preview and operational ownership.

What I look at first

  • Quick check: compare alias handling, preview needs, and template complexity on the Drupal content types that matter most commercially.
  • Which Drupal responsibilities remain and which move into Next.js.
  • How search, templates, and cache behaviour are handled today.

How I help fix this

  • Define a headless architecture that respects Drupal content complexity.
  • Map route, preview, and metadata continuity before implementation begins.
  • Support delivery decisions as the new front end takes shape.

When to bring me in

  • Bring me in before the migration is treated as a frontend refresh and the Drupal operating model gets ignored.
  • Bring me in when alias handling, preview, and SEO continuity are businesscritical at launch.

Related project experience

  1. Nando’s

    Senior software engineer on the UK and Ireland replatform, migrating Nando’s customerfacing websites from legacy Drupal to a unified headless platform built with Next.js and Storyblok, with a focus on performance, accessibility, and SEO.

    Screenshot of the Nando’s website; part of John Kavanagh's development portfolio.

Supporting technical articles

  • Building a Headless CMS-Powered Site with Next.js

    01 September 2025

    Build a headless CMS-powered Next.js site with stronger content modelling, preview support, and data boundaries that scale well.

  • All about headless CMSes

    24 October 2021

    Websites have not been set-and-forget for a long time now, and without the technical know-how to update a static site, CMSes are a key part of web development.

  • Optimising HTML markup for SEO

    03 February 2017

    Optimising HTML improves SEO, accessibility, and user experience. Here, I explore semantic HTML, clean code, alt text, and other best practices.

Related services

  1. Parent hub

    Migrations to Next.js

    Choose the right Next.js migration path when an older front end, legacy platform, or hardtomaintain site needs a cleaner architecture and safer migration plan.

  2. Capability

    Headless Architecture Consulting

    Bring in headless CMS consulting when CMS architecture, SEO controls, preview trust, or revalidation decisions are about to lock in operational pain.

  3. Adjacent scenario

    Gatsby to Next.js Migration

    Move off Gatsby before slow builds, brittle plugins, and awkward content updates start blocking delivery.

Questions teams usually ask

Can Drupal remain part of the content platform?
Yes. In many migrations Drupal remains the structured content source while Next.js takes over delivery, performance, and front-end flexibility.
Why is this migration usually harder than it first looks?
Because aliases, content relationships, preview expectations, and metadata handling are often more complex than a theme replacement suggests. Those details usually decide whether the migration feels stable after launch.

Show me what's not working

Send me the affected page or route, point me at the code if that helps, and tell me what you expected to happen versus what is happening now. If this connects to a Next.js migration, technical SEO drop, performance issue, launch, or platform move, include that context too. I'll come back with the clearest next step.

Skip past clients

Previous Clients