What is Decoupled Drupal? Architecture, Benefits, and When to Use It
Decoupled Drupal separates Drupal's content management from its presentation layer. Here's how it works, when to use it, and how it differs from fully headless Drupal.
Decoupled Drupal is an architecture where Drupal acts as a content backend — providing content via API (JSON:API or GraphQL) — while the frontend is built as a separate application, typically in React, Next.js, Astro, or another modern framework. Drupal keeps its role as the CMS; the frontend is no longer Drupal’s job.
The term “decoupled” is broader than “headless.” Decoupled Drupal can mean any of three things depending on how strict the separation is:
- Fully decoupled (headless): Drupal serves only an API. The frontend is a totally separate app that Drupal knows nothing about. Visitors never see a Drupal-rendered page.
- Progressively decoupled: Drupal renders most of the page, but injects JavaScript components (typically React) into specific regions. Drupal is still the templating engine; React enhances interactivity.
- Hybrid: A mix — some routes are Drupal-rendered, others are frontend-rendered, usually during a gradual migration.
When people say “decoupled Drupal” without a qualifier, they usually mean fully decoupled. That’s what we’ll focus on here.
How decoupled Drupal works
A typical decoupled Drupal stack looks like this:
- Drupal backend — running Drupal 10 or 11, with the
jsonapicore module enabled (orgraphqlcontrib). Editors log in toadmin.yoursite.comand use Drupal’s normal content management UI: content types, Layout Builder, Media Library, Workflows, Webform, all of it. - API layer — JSON:API exposes every content type and entity as an API endpoint automatically. GraphQL requires a schema setup. You can also build custom REST endpoints when you need tailored responses.
- Frontend app — a React, Next.js, or Astro app that fetches from the API, runs on Vercel or Netlify or your own infra, and is what visitors actually see at
yoursite.com. - Preview — draft-aware routes on the frontend that request unpublished content from Drupal using an editor’s session token. Without this, editors can’t see what a draft looks like before publishing.
- Authentication — if your site has logged-in users, you’ll need either Drupal-issued OAuth tokens or a separate auth layer (Auth0, Clerk, Supabase Auth) that talks to Drupal.
Why decouple Drupal?
The honest answer: because you want modern frontend development without giving up Drupal’s editorial depth.
Drupal has decades of investment in things that newer CMSs struggle with — content moderation workflows, multilingual, taxonomies with arbitrary hierarchies, Paragraphs and Layout Builder for structured content, granular permissions (Drupal has ~19 permission types out of the box), the Migrate API, Views for complex content queries. If you rip those out and move to Contentful or Sanity, you’re going to miss most of them within the first month.
At the same time, Drupal’s theming layer (Twig, preprocess functions, CSS in module folders) is a painful place to build a modern frontend. Your React-trained frontend engineers don’t want to live there. Your design system doesn’t fit naturally. And the render pipeline makes performance tuning harder than it needs to be.
Decoupling lets you keep the parts of Drupal that are genuinely great (the CMS) and replace the parts that are genuinely painful (the frontend).
Decoupled Drupal vs headless Drupal — what’s the difference?
In practice, nothing. The terms get used interchangeably. If someone wants to be precise, they’ll say:
- “Headless Drupal” usually means fully decoupled — Drupal is only an API, no frontend at all.
- “Decoupled Drupal” is broader and can include progressive decoupling.
The Drupal community tends to use “decoupled” more often; the broader CMS world uses “headless” more often. Same concept, different tribal vocabulary.
When decoupled Drupal is the right call
It’s usually the right call when:
- You already run Drupal and your editorial team depends on it. A migration to a different CMS would destroy workflows you actually rely on.
- Your frontend needs to be modern (React/Next.js/Astro) for performance, DX, or ecosystem reasons.
- You have engineering capacity to maintain two apps (backend and frontend).
- Your content has enough structure to benefit from Drupal’s content model (relations, taxonomies, moderation) — a flat blog doesn’t need Drupal.
- You need preview, draft workflows, and multi-user editing that headless-native CMSs haven’t caught up on.
It’s usually the wrong call when:
- You’re running a simple marketing site. Astro with a Markdown content collection is simpler and faster.
- You don’t have frontend engineers. A decoupled Drupal migration with no one to own the frontend is a half-finished project waiting to happen.
- You haven’t thought about preview. Teams routinely discover that preview is harder than expected, three months in.
- Your editorial team loves the Drupal theme they have. If it works, don’t break it.
Real costs to plan for
Three things always surprise teams doing their first decoupled migration:
- Preview infrastructure. Expect to spend 10-20% of the project budget on preview tunnels, draft routing, and editor onboarding. It’s the #1 thing that derails headless CMS launches.
- SEO migration. Your old Drupal site has redirects, canonical URLs, structured data, and a sitemap that all need to be preserved. Don’t underestimate the SEO work — search traffic will drop for 2-4 weeks after launch no matter how careful you are, but if you skip redirects it’ll drop for six months.
- Second deploy pipeline. Now you have Drupal deploys and frontend deploys, and they can drift. Build tooling to catch API contract mismatches at CI time, not in production.
TL;DR
Decoupled Drupal is an architecture where Drupal is the content backend and a separate modern frontend app renders the actual website. It’s the right call if you want Drupal’s editorial depth with a React/Next.js/Astro frontend — and the wrong call if you don’t have frontend engineering capacity or haven’t thought through preview. Most of the decoupled-Drupal projects we see fail because teams underestimate preview, not because the architecture is bad.
Thinking about decoupling a Drupal site? We’ll do a free 30-minute audit call and tell you honestly whether it’s the right move. Sometimes it isn’t.