A modern front end over the Drupal content model your editors already rely on, with taxonomy, workflow and URL structure preserved.
Drupal earns its reputation on the content side: taxonomy, entity relationships, revisions, workflow states and granular permissions are genuinely better than most alternatives. The pain is almost always in theming, front-end performance, and the scope of major version upgrades.
Headless splits those. Drupal continues to own content modelling and editorial workflow, exposed over JSON:API, while a React or Next.js front end handles rendering. Editors notice nothing except that preview is faster.
It also decouples the upgrade path. A Drupal major version upgrade stops being a front-end rewrite, which for most organisations is the larger half of the scope.
Teams that start here often pair it with WordPress to headless migration, web app development and REST to GraphQL migration.
Decoupling turns a Drupal major upgrade from a whole-site project into a back-end project. For most organisations that is where the scope was hiding.
Four things that are more involved than in a simpler CMS.
Deeply nested entity references and paragraphs produce unwieldy API responses, so the front end fetches far more than it renders.
Drupal granular permissions have to be represented in the front end and the API layer, or content leaks or disappears.
Pathauto patterns, redirects and language prefixes have to be mapped completely, or multilingual URLs break after cutover.
Content moderation states and revision preview need explicit support, or editors lose the review process they depend on.
The content model preserved, the front end replaced.
Content types, fields, paragraphs, taxonomies and reference depth catalogued, with the API response shape designed against real templates.
JSON:API or GraphQL with sparse fieldsets and includes tuned so the front end fetches what it renders and nothing more.
Pathauto patterns, aliases, redirects and language prefixes mapped and verified against crawl data.
Content moderation states and revision preview supported in the front end so review workflows continue unchanged.
Drupal permissions represented consistently in the delivery layer, verified with role-based tests.
Language negotiation, hreflang and translated URL structures handled properly rather than approximated.
Parallel running until the crawl is clean.
Entities, fields, permissions, URL patterns and multilingual configuration documented as the baseline.
Response shapes designed per template, with sparse fieldsets to keep payloads small.
Templates rebuilt in Next.js preserving the existing design, with preview and moderation wired in.
Crawl-based comparison of URLs, metadata, hreflang and structured data between old and new.
Staged switch with redirects live and crawl monitoring for the following weeks.
Drupal for content, modern tooling for delivery.
Drupal retained for modelling, workflow and permissions, exposed over a typed API.
Static generation with revalidation on publish, preserving the current design.
Moderation states and revision preview supported so review workflows survive the change.
Edge caching with targeted invalidation per entity.
A university ran Drupal 9 across four languages with a decade of Pathauto patterns and manual redirects. Mobile performance was poor and the Drupal 10 upgrade scope was dominated by theme work.
The audit found language-prefixed aliases that did not follow the documented pattern, plus several hundred manual redirects that existed only in the database. Both would have broken silently.
We decoupled the front end, preserved every alias and hreflang relationship, and verified by crawling all four language trees. The subsequent Drupal 10 upgrade touched no front-end code at all.
Your content model, workflow and permissions are the valuable part of a Drupal installation. We keep all three and replace only the rendering layer.
We move one slice at a time behind a router, with both systems live, so every step is small and every step is reversible.
A working demo and a written note every Friday covering what shipped, what slipped and what it means for the date. No status theatre.
Nothing goes live in one jump. We run in parallel or behind a flag until the numbers say it is safe to switch over.