Skip to content
at_.DEVELOPMENT

Headless WordPress without the regret

What actually breaks when you split the front end off, and the four decisions that keep editors happy.

June 2, 20269 min read
wordpressnext.jsarchitecture

Going headless is usually sold as a performance decision. In practice it is an editorial one. The front end gets faster almost by accident; what you actually spend your months on is keeping the authoring experience intact while everything underneath it moves.

Four decisions did most of the work on the last four builds. Everything else was detail.

1. Preview is a feature, not a nice-to-have

If an editor cannot see their draft on the real front end, they will not trust the system, and they will route around it. Build signed, expiring preview URLs that render production code paths on day one — not in phase two.

APP/PREVIEW/ROUTE.TS
01const { id, sig } = parse(request.url);
02if (!verify(id, sig)) return new Response("nope", { status: 401 });
03draftMode().enable();
04redirect(`/posts/${id}`);

2. One cache tag per content object

Time-based revalidation is a guess. Tag every fetch with the object it came from, then let the CMS invalidate on save. Editors expect their change to be live before they finish reading the confirmation toast.

Save in WordPress → webhook → tag purge at the edge → next request re-renders.

3. Keep the admin boring

Every custom admin screen is a thing you now maintain forever. Native blocks and a small set of well-named fields beat a bespoke editorial UI in every case I have measured.

The best sign a headless build is going well: the editors stop asking whether it is headless.

4. Decide who owns the URL

Routing split across two systems is where most of the pain lives. Pick one owner — I put it in the front end, with redirects exported from the CMS at build time — and write it down where the next developer will find it.

None of this is exotic. It is just the set of things I now refuse to leave until phase two.

Alexander Talaat
Washington, D.C.

Full-stack developer and WordPress architect writing about headless CMS, Next.js and AI-assisted builds.

Work with me
Get new posts by email

No spam. One or two emails a month, unsubscribe anytime.