Skip to content
arrow_backBack to insights
April 13, 20261 min read

The State of Headless Drupal in 2026

Evaluating JSON:API vs GraphQL for modern frontend frameworks like Next.js 16, and why the tooling has finally caught up to the architectural promise.

The case for JSON:API

Native to Drupal core, zero extra infrastructure, and — with jsonapi_extras — enough flexibility to avoid the classic "N+1 relationship" tax.

The case for GraphQL

Still best-in-class when the frontend team is used to it and when a single page assembles data from many content types in one round trip.

My recommendation

Start with JSON:API. Add GraphQL only when a specific page genuinely cannot be served efficiently by a single JSON:API call with include paths.

Read next

  • Jul 24, 2026

    Layout Builder Is Over-Applied: A Decision Framework for When It Actually Fits

    Layout Builder has become the reflexive answer in Drupal to "how should editors build pages." Somewhere along the way it stopped being one option among several and became the default. That is a mistake I see repeated across projects. Layout Builder is a genuinely good tool for a specific job. The problem is that it gets chosen for jobs it is not suited to, usually because it is the most visible option and nobody paused to ask whether it fit. This post is the decision framework I use to choose between Layout Builder, Paragraphs, custom templates, and plain blocks.

  • Jun 23, 2026

    I Keep Evaluating Alternatives to Drupal. I Keep Choosing Drupal. Here Is the Actual Reasoning.

    I don't ignore the alternatives to Drupal. Sanity, Payload, Strapi, custom Next.js builds. I've built real things with several of them. When a project's requirements push me to look elsewhere, I take them seriously. Here is the honest reasoning behind why I keep choosing Drupal anyway.

  • May 25, 2026

    Stop Making Users Pay for Work Your CI Pipeline Could Do

    Most slow Drupal sites are not slow because the code is wrong. They are slow because expensive work runs at request time when it could have run in the CI pipeline instead. Cold caches, image derivatives, search indexes. The pattern repeats. The fix is the same in every case: move the cost off your users and onto a controlled environment where nobody is waiting. This is a principle, not a tip. Three examples below to make it concrete.

Share this

X and LinkedIn only let you share a link. Copy the content below to paste the full post into either platform.