Best Headless CMS by Technology Stack: .NET, PHP (Laravel), JavaScript (2026)

Your team's primary language isn't a minor detail — it determines how fast you ship, how maintainable your content platform stays at scale, and how much friction your editors face daily. There is no single "best headless CMS." The right choice depends on your stack, your DevOps maturity, and the workflows your content team actually needs.

This guide takes a stack-first approach. Instead of ranking CMS platforms in a vacuum, it maps technology ecosystems to CMS archetypes, frontend frameworks, and full reference stacks — with concrete criteria you can validate in a proof-of-concept before committing.

How to read this article: start with the quick decision matrix for a high-level match, then dive into your stack's dedicated section for checklists and integration patterns. The best frontend and best stack sections apply across all stacks. The FAQ at the end covers the questions that come up most during CMS evaluations.

Quick decision matrix

Before you evaluate specific platforms, identify your CMS archetype. The table below maps technology focus to CMS category, frontend pairing, and the AI capabilities worth validating — along with the red flags that signal a poor fit.

Technology focus

CMS archetype

Examples

Best-fit frontend

Where AI adds value

Red flags

.NET / Azure-first

Enterprise SaaS or self-host with .NET SDK

Contentful, Umbraco Heartcore, Optimizely CMS

Next.js (ISR on Azure Static Web Apps)

Auto-tagging via Azure AI, content QA pipelines, SEO metadata generation

No .NET SDK (just a REST wrapper); missing Azure Marketplace listing; no environment promotion

PHP / Laravel

Self-host open-source or Laravel-native

Statamic, Strapi, Directus

Next.js or Nuxt (SSG + ISR)

Draft generation via Laravel queues + LLM API, media auto-captioning

No Composer install path; vendor lock-in on media storage; no queue driver support

JS / TypeScript

API-first SaaS or self-host Node.js

Sanity, Payload, Contentful, Hygraph

Next.js, Astro, Remix

Real-time content QA, schema validation, AI-powered semantic search

No TypeScript types for content models; no local dev experience; "headless" without preview API

Mixed stack (platform team + FE guild)

SaaS with multi-SDK + GraphQL

Contentful, Hygraph, Storyblok

Next.js as standard, others for islands

Cross-platform content reuse scoring, automated translation

One SDK significantly weaker than others; no GraphQL option; single-language docs

This matrix is a starting point. The sections below unpack each stack in detail with checklists, integration patterns, and PoC validation steps.

Best headless CMS for .NET developers

What matters for .NET teams

  • Enterprise auth integration — Entra ID (formerly Azure AD) via OIDC or SAML, RBAC with custom roles beyond admin/editor/viewer, and an audit trail with configurable retention policy. If your CMS can't plug into your identity plane, you're maintaining a parallel user directory.
  • Typed .NET SDK — A proper SDK means auto-generated models from content types, separate clients for Management API, Delivery API, and Preview API. A thin REST wrapper that returns dynamic objects doesn't count.
  • Hosting flexibility — Self-host on Azure App Service or AKS for data residency, or enterprise SaaS with SOC 2 Type II and ISO 27001 certifications. Verify the compliance certs actually cover the CMS product, not just the vendor's corporate infrastructure.
  • Content modeling rigor — Strong field validation, environment promotion (dev → staging → prod with content diff), and content type versioning. Without environments, every content change is a production deployment.
  • Async integration patterns — Webhooks are table stakes. For enterprise workflows, you need integration with Azure Service Bus or Event Grid for reliable, ordered event processing — not just fire-and-forget HTTP callbacks.
  • Media pipeline — DAM integration or a built-in image API with CDN delivery and on-the-fly transformations (resize, format conversion, quality optimization). Serving original 8MB PNGs through your CMS API is not a media strategy.
  • Localization architecture — Field-level i18n with locale fallback chains, not just "create a separate entry per language." Verify the API supports querying by locale without N+1 requests.
  • Preview infrastructure — Dedicated preview endpoint with token-based auth, separate from the delivery API. "Just use the draft API" is not a preview strategy — it leaks unpublished content if misconfigured.

Integration architecture for .NET

A production-grade .NET + headless CMS setup separates concerns across four layers:

[CMS API] → [Azure API Management / Gateway] → [Next.js on Azure SWA]

[Azure Function: webhook handler]

[Azure Service Bus topic]
↓ ↓
[AI enrichment job] [Search index update]
(tagging, summaries) (Azure AI Search)

  • API Gateway caching — Reduces CMS API calls by 60–80%. Set TTL per content type: 5 minutes for articles, 1 hour for navigation, 24 hours for config. Invalidate via webhook-triggered cache purge.
  • Preview pipeline — Deploy a separate Azure SWA slot that reads from the CMS preview API using a scoped token. Editors get instant preview without touching the production deployment.
  • AI enrichment — Background jobs triggered by content publish events. The webhook handler drops a message on Service Bus; a consumer function calls Azure OpenAI for auto-tagging, summarization, or SEO metadata — then writes results back via the CMS Management API.
  • Search sync — Webhook → queue → indexer pattern. Never call a search indexer directly from a webhook handler — if the indexer is slow or down, you lose the event. The queue gives you retries and dead-letter handling.

.NET readiness checklist

Requirement

Why it matters

CMS-side capability

Frontend impact

Azure ops impact

Entra ID SSO

Single identity plane, conditional access policies

OIDC/SAML provider configuration, group mapping

N/A (CMS-only auth)

App registration, redirect URIs, conditional access rules

Typed .NET SDK

Compile-time safety, IntelliSense, fewer runtime bugs

Auto-generated models from content types

N/A (backend integration concern)

NuGet package versioning, CI restore

Environment promotion

Safe content staging without production risk

Dev → staging → prod with visual diff and approval workflow

Preview URL switches per environment

Deployment slot alignment, environment variables per slot

Webhook reliability

Zero missed content updates across the pipeline

Configurable retry policy, dead-letter queue, event filtering

ISR revalidation triggers on content publish

Service Bus topic per event type, monitoring alerts

Content versioning

Audit compliance, safe rollback for editors

Entry-level versioning with side-by-side compare

Version selector in preview interface

Backup retention policy alignment

Media CDN delivery

Performance, cost efficiency, global reach

Signed URLs, on-the-fly transformation API

next/image with CMS CDN as origin domain

CDN profile configuration, WAF rules for media endpoints

Red flags for .NET CMS selection

  • The .NET SDK is a thin REST wrapper without typed models — you'll end up writing and maintaining your own SDK layer.
  • "Azure integration" means only blob storage support — check for Service Bus, Key Vault, and Managed Identity support before committing.
  • No environment promotion — every content change goes straight to production, and your editors will break things.
  • Preview requires using the vendor's hosted UI with no API access — your editors are locked into the vendor's workflow.
  • Audit log retention is capped at 30 days — you won't pass enterprise compliance reviews.
  • Webhook delivery is fire-and-forget with no retry mechanism — you will lose content update events under load.

Best PHP headless CMS (including best Laravel headless CMS)

Best PHP headless CMS — selection criteria

The PHP ecosystem offers strong self-hosted options where you control the infrastructure, the data, and the update cycle. Here's what separates a capable PHP headless CMS from a legacy monolith with an API bolted on:

  • Self-host friendly — Docker Compose for local dev, straightforward deployment to bare metal or Kubernetes. Database migrations through CLI (not a web installer), automated backup support, and clear upgrade paths between versions.
  • Granular role system — Custom roles beyond admin/editor/viewer. Field-level permissions, API token scoping per role, and the ability to restrict access by content type or locale. If RBAC means "two roles and a checkbox," it's not enterprise-ready.
  • Queue integration — Background job support for media processing, webhook dispatch, and AI tasks. If image resizing blocks the HTTP response, your editors are waiting 8 seconds to save a page.
  • Flexible content structures — Repeatable component blocks, nested groups, JSON fields with schema validation, and polymorphic relationships. Flat field lists with "text/textarea/image" types won't model real-world content.
  • Localization workflow — Locale-aware API routing, per-locale draft/review/publish states, and fallback chains. Translation should be a first-class workflow, not "duplicate the entry and change the slug."
  • Media storage abstraction — S3-compatible storage driver as the default, not local filesystem. CDN-friendly URL structure, image transformation API, and configurable upload limits. Migrating media later is painful.
  • Plugin architecture — Lifecycle hooks, custom API endpoints, and event-driven extensibility. "Extensible" should mean your team writes PHP classes, not that you fork the CMS codebase.
  • Maintenance cadence — Regular releases, timely security patches, and migration guides between major versions. Check the git commit history and issue response time, not just the marketing site.

Best Laravel headless CMS — what "Laravel-native" means

When we say "Laravel-native CMS," we mean the CMS is built on Laravel's conventions and can be extended using standard Laravel tools — not just that it's written in PHP:

  • Auth through Laravel guards and policies — The CMS uses Laravel's authentication system, not a parallel auth implementation. Your existing middleware, gates, and policies apply to CMS routes.
  • Eloquent models for content — Content entries are queryable like any Eloquent model. You can write scopes, use relationships, and integrate content queries into your existing application logic without a separate API client.
  • Events and queues — Content publish fires a Laravel event. You dispatch queue jobs for downstream processing (webhooks, AI enrichment, cache invalidation) using Laravel's queue system — not a proprietary job runner.
  • Blade or Livewire admin panel — The editorial interface is built with Laravel's view layer and can be extended using the same tools your team already knows. Adding a custom dashboard widget shouldn't require learning a different framework.
  • Composer-first distribution — Install, update, and extend through Composer. Dependency management follows PHP ecosystem standards, not a custom installer or zip download.
  • Preview through Laravel routes — Draft content is accessible through signed URLs or middleware-protected routes that you define. Preview is part of your application routing, not a separate vendor-hosted interface.

CMS platforms to evaluate (in context, not ranked):

  • Statamic — The closest to a "true Laravel CMS." Flat-file or Eloquent storage driver, Antlers templating or Blade, and deep Laravel integration. Best for teams that want CMS features inside an existing Laravel application.
  • Filament with CMS plugins — Not a CMS out of the box, but a Laravel-native admin panel with community CMS addons. Best for teams that want to build a custom content management layer on Laravel conventions.
  • October CMS — Laravel-based with a plugin marketplace. Evaluate the headless API quality and community activity before committing — maturity varies across plugins.
  • Directus — Not PHP-native (Node.js), but database-first with excellent support for existing MySQL/Postgres schemas. Consider if your team already has a database schema and wants a CMS layer on top.
  • Strapi — Also not PHP, but frequently compared in PHP team evaluations. Worth considering if the team is flexible on backend language and values the admin UI and plugin ecosystem.

Laravel-first CMS vs SaaS headless CMS

Dimension

Laravel-first CMS

SaaS headless CMS

When to pick Laravel

When to pick SaaS

Key risks

Total cost of ownership

Server infrastructure + DevOps hours + update maintenance

Monthly subscription + API call metering

≤5 content editors, strong DevOps team, existing Laravel infra

>10 editors, no dedicated DevOps capacity, need SLA guarantees

Laravel: unplanned server scaling costs; SaaS: API overage billing surprises

Time to first content

1–3 days (install, model, seed, configure)

1–4 hours (signup, define model, start editing)

Team already maintains a Laravel application

Greenfield project where speed-to-market matters most

Laravel: scope creep adding "just one more custom feature"; SaaS: content model lock-in

Customization depth

Unlimited — it's your codebase

Limited to the platform's extension API and marketplace

Complex domain logic tightly coupled to content (e.g., pricing rules, compliance checks)

Standard marketing site or blog content

Laravel: every customization is maintenance; SaaS: hitting walls on day 60

Editorial UX / preview

Build and maintain your own preview routes and UI

Built-in, usually polished and tested across browsers

Developers are available to build and iterate on editorial tooling

Editors need self-service preview and workflow tooling today

Laravel: poor preview UX = editor frustration and workarounds; SaaS: locked into vendor's editorial opinions

Security and compliance

You own patching, hardening, and audit certification

Vendor manages SOC 2, ISO 27001, penetration testing

Strict data residency requirements that exclude SaaS providers

Need vendor-managed compliance certifications for client or regulatory requirements

Laravel: missed security patches = breach exposure; SaaS: trusting the vendor's security posture

Scalability model

Horizontal scaling with Laravel Octane, Redis, load balancers

Vendor-managed auto-scaling, globally distributed

Predictable traffic patterns, cost optimization priority

Traffic spikes from campaigns, events, or viral content

Laravel: scaling expertise required on your team; SaaS: rate throttling during peak

Data portability

Full database access, export Eloquent models, own your schema

Export via API (check if bulk export exists and what format)

Full data ownership is a hard requirement

Acceptable vendor dependency with contractual data export guarantees

Laravel: migrating means migrating the framework too; SaaS: verify API export completeness before signing

Red flags for PHP / Laravel CMS selection

  • "Laravel-based" but no Composer install path — it's a custom fork, not an ecosystem participant. You'll fight updates.
  • No queue driver support — media processing and webhook dispatch block HTTP requests. Editors wait, timeouts happen.
  • Admin panel is a React SPA with its own auth system — you're now maintaining two authentication layers and two session stores. Security gap guaranteed.
  • No database migration support — schema changes require manual SQL. One missed migration in production and you're debugging at 2 AM.
  • Flat-file storage only with no database option — doesn't scale beyond ~1,000 entries without performance degradation.
  • API documentation is auto-generated Swagger with no request/response examples — your frontend team will reverse-engineer the API through trial and error.

Best JavaScript headless CMS

When JS-native CMS wins

JavaScript and TypeScript teams have the unique advantage of running the same language across the entire stack — from content model definition to API consumption to frontend rendering. A JS-native CMS amplifies this advantage:

  • TypeScript end-to-end — Content types defined in code generate TypeScript interfaces automatically. Those types flow into frontend components, API responses, and validation logic. One type system, zero manual synchronization.
  • Editor UI customization — Custom fields, sidebar plugins, workflow widgets, and dashboard components — all built with React or Vue using the same toolchain your frontend team already maintains. No context-switching to a different language or framework.
  • Vercel and Netlify native integration — Built-in deploy hooks, automatic preview deployments per branch, ISR and on-demand revalidation support, and edge middleware compatibility. The deployment pipeline is a first-class feature, not an afterthought.
  • Composable content blocks — Slices (Prismic), portable text (Sanity), custom blocks (Payload) — granular content modeling that maps directly to React/Vue components. Editors compose pages from typed building blocks.
  • Real-time collaboration — Operational transform or CRDT-based concurrent editing (Sanity Studio, TinaCMS). Multiple editors work on the same document simultaneously without conflict resolution headaches.
  • Monorepo compatibility — CMS configuration as code sits alongside frontend code and shared type definitions in a single repository. One PR changes a content model, updates the types, and adjusts the frontend component.
  • Local development parity — The CMS runs locally with hot reload and seed data. Your development environment matches production behavior — no "it works on the staging dashboard" debugging.
  • Content-as-code workflows — Git-backed content (TinaCMS) or API-backed with schema versioning and CI validation. Content model changes go through code review, just like application code.

AI workflow patterns for JS CMS

AI capabilities in a headless CMS are only valuable if you can integrate them into your existing pipelines. The patterns below work across most JS-native CMS platforms — what matters is API access, webhook reliability, and write-back capability:

  • Auto-tagging pipeline — Content publish webhook triggers a serverless function. The function sends content to an embedding API, matches against your taxonomy via vector similarity, and writes tags back through the CMS Management API. Result: consistent taxonomy without manual tagging.
  • Draft generation with guardrails — An editor provides a content brief (topic, audience, tone, length). A queue job sends the brief to an LLM API, receives a draft, runs it through schema validation (required fields, max lengths, link format), and creates a draft entry for human review. The editor refines and publishes — the LLM never publishes directly.
  • Content QA automation — A pre-publish hook runs checks: broken internal links, missing alt text on images, SEO meta completeness, reading level score, and content model schema compliance. If checks fail, the publish action is blocked with a specific error message. Editors fix issues before content goes live.
  • Semantic search enrichment — A scheduled job generates vector embeddings for all published content and stores them in a vector database (Pinecone, Weaviate, or pgvector). A "related content" API endpoint returns semantically similar entries — far more accurate than tag-based matching.
  • Translation acceleration — Source content is sent to an LLM for initial translation. The output enters a human review workflow with side-by-side comparison. Reviewers edit and approve per locale. This pattern reduces translation cost by 40–60% while maintaining quality through human oversight.

CMS platforms to evaluate:

  • Sanity — Real-time editing, GROQ query language, portable text for rich content, and deep Studio customization. Strong for teams that want maximum editorial UI flexibility.
  • Payload — Self-hosted, TypeScript-native with code-first configuration. Access control defined in code, not a dashboard. Best for teams that want full control and treat CMS config as part of the codebase.
  • Contentful — Market-leading SaaS with Compose and Launch for editorial workflows. Extensive App Framework for custom integrations. Best for organizations that need a mature ecosystem and vendor support.
  • Hygraph — GraphQL-native with content federation for multi-source architectures. Best for teams building a unified content layer across multiple backend systems.
  • TinaCMS — Git-backed with visual editing and MDX support. Best for documentation sites and developer-oriented content where content lives in the repository.
  • KeystoneJS — Prisma-based, excellent for applications that need CMS capabilities alongside custom business logic. Best when the CMS is part of a larger Node.js application.

JS CMS DX scorecard

Criteria

What "good" looks like

How to validate in a PoC

Warning signs

TypeScript support

Auto-generated types from content models; typed SDK; typed configuration files

Define 3 content types → verify TS interfaces auto-generate → consume in a Next.js component with full IntelliSense

Manual type definitions required; SDK responses typed as any or unknown; config files are plain JS

Preview experience

Sub-second preview updates; side-by-side editor and preview; shareable preview links with expiration

Create a draft → change a text field → measure time until preview reflects the change. Target: <1 second

Preview requires a full rebuild; no draft API endpoint; preview is a separate deployment

Content modeling depth

Nested blocks, typed references, conditional fields, custom validation rules, polymorphic content

Model a complex page: hero + FAQ accordion + CTA + nested author references → verify all relationships resolve in API

Flat field list only; no nested structures; validation limited to "required" checkbox

Plugin / extension API

Custom field types, sidebar widgets, workflow hooks, dashboard widgets, all via documented API

Build a simple custom field (color picker or JSON editor) → measure effort. Target: <2 hours

"Plugins" means only a pre-built marketplace; no API for custom development

API performance

<100ms p95 for delivery API; field selection to avoid over-fetching; pagination with cursors

Send 50 concurrent requests for a complex content type → measure p95 latency

No field selection (returns everything); >500ms p95; no pagination or only offset-based

Migration tooling

CLI for import/export; content model migration scripts; rollback capability

Export all content → import into a fresh instance → diff for data integrity

No bulk export; manual migration only; no content model versioning

Local development

CMS runs locally with hot reload; seed data scripts; behavior matches production

Run npm run dev → CMS + frontend running locally in under 2 minutes

"Use our cloud dashboard" for all development; no local option; env parity issues

Webhook reliability

Configurable retry policy; typed event payloads; payload signing for verification; dead-letter handling

Trigger 100 publish events → verify all received; simulate a failure → verify retry fires

Fire-and-forget delivery; no retries; no payload signing; no way to replay missed events

Red flags for JS CMS selection

  • "TypeScript support" means the SDK is written in TypeScript, but content model types are Record<string, any> — you get zero type safety where it matters most.
  • No local development experience — all content modeling and testing happens through a cloud dashboard. You can't work offline or run integration tests locally.
  • Preview requires a separate build and deployment — editors wait minutes instead of seeing changes instantly.
  • GraphQL schema is auto-generated with no customization — you're stuck with the CMS's query structure, over-fetching data you don't need.
  • "AI-powered" appears on the marketing page but there's no API for custom AI pipelines — you can't integrate your own models or workflows.
  • Content export is only available through a support ticket — you won't discover this lock-in until you try to migrate.

Best frontend for headless CMS

Frontend framework options

The frontend framework choice depends on three factors: your team's rendering strategy requirements, existing framework expertise, and the performance characteristics your content demands. There is no universally "best frontend" — only the best match for your specific scenario.

  • Next.js — Supports ISR, SSG, and SSR in a single framework with the largest ecosystem of CMS integrations, middleware for edge logic, and strong enterprise adoption. The default choice when you need one framework for everything. Trade-off: Vercel platform affinity adds soft lock-in; the framework's growing feature surface increases complexity.
  • Nuxt — The right choice if your team is a Vue organization. Hybrid rendering modes, auto-imports, excellent developer experience, and a mature module ecosystem. Trade-off: smaller enterprise adoption footprint than Next.js; fewer CMS-specific SDK integrations available.
  • Astro — Purpose-built for content-heavy sites with minimal client-side JavaScript. Islands architecture means only interactive components ship JS to the browser. Outstanding Core Web Vitals out of the box. Trade-off: not suited for app-like interactive experiences; preview integration less mature than Next.js.
  • Remix — Data-driven nested routing with progressive enhancement and SSR-first rendering. Strong for applications where content and dynamic data coexist. Trade-off: smaller CMS integration ecosystem; more manual setup for preview and caching.
  • SvelteKit — Consistently praised for developer experience and raw performance. Compiles away the framework at build time. Trade-off: smallest talent pool among major frameworks; fewest CMS SDKs available; evaluate ecosystem maturity for your scale.

Frontend chooser

Use case

Best frontend

Why

Preview strategy

Caching strategy

Consider if...

Marketing site + blog (SEO-critical)

Astro or Next.js (SSG mode)

Minimal JS = faster load, better Core Web Vitals scores

On-demand ISR revalidation or dev-mode preview route with draft API

CDN edge cache with stale-while-revalidate; webhook-triggered purge

>500 pages, content updates less than once per day

E-commerce storefront

Next.js

ISR for catalog pages, SSR for cart/checkout, middleware for A/B testing

Draft mode with preview cookies scoped to editor sessions

Edge cache with tag-based invalidation per product/collection

Personalization requirements, complex routing logic

SaaS documentation site

Astro or Next.js

MDX support, fast builds, strong search integration (Algolia, DocSearch)

Git-based preview via PR preview deployments

Long TTL (hours/days), invalidate on merge to main branch

>200 pages, structured content with versioning

Member portal or dashboard

Next.js or Remix

SSR for auth-gated content, API routes for backend logic, session management

Auth-aware preview with session tokens, role-based preview access

No edge cache for personalized content; server-side cache with user-segment keys

User-specific content, forms, transactional features

Multi-language content hub

Nuxt or Next.js

Built-in i18n routing, locale-aware static generation, hreflang automation

Per-locale preview URLs with locale switcher in preview toolbar

Per-locale cache keys; independent invalidation per language

>5 locales, frequent translation updates

Campaign landing pages

Astro

Fast build times, minimal overhead, component islands for interactive elements

Visual editing integration (TinaCMS, Storyblok Visual Editor)

Aggressive CDN cache with manual purge on campaign publish

Short-lived pages, rapid design iteration, performance-critical

Red flags for frontend selection

  • Choosing a framework because it's trending without running a PoC on your actual content — what performs well for a demo app may struggle with your 2,000-page site.
  • Preview strategy is an afterthought — editors working blind leads to content errors that reach production.
  • No ISR or revalidation strategy — you're stuck choosing between stale content and full site rebuilds on every edit.
  • Your chosen framework has no SDK for your CMS — you'll build and maintain a custom integration layer indefinitely.
  • Selecting SSR-everywhere when 90% of your pages are static — you're paying for server compute that delivers worse performance than a CDN-cached static page.

Best stack for headless CMS

A headless CMS is one layer in a larger architecture. The stack around it — search, auth, media, hosting, observability — determines whether the system scales, stays secure, and remains maintainable. Below are reference stacks for common organizational models.

Reference stacks

1. Enterprise + Compliance stack For regulated industries with SOC 2 / ISO 27001 requirements, 50+ content editors, and multi-stage approval workflows.

2. Startup speed stack For MVPs shipping in 2–4 weeks with fewer than 10 editors, prioritizing iteration speed over long-term infrastructure optimization.

3. Media-heavy stack For video and podcast platforms, image-heavy editorial sites, and any property where media delivery cost and performance are primary concerns.

4. Intranet / employee portal stack For internal knowledge bases with permissions-aware search, SCIM provisioning from corporate IdP, and audit requirements for internal content access.

5. Gov / regulated stack For public-sector projects requiring WCAG 2.2 AA accessibility compliance, immutable audit logs, multi-stage content approvals, and data residency guarantees.

6. Multi-brand / multi-tenant stack For agencies or brand houses managing multiple properties on shared infrastructure with isolated content spaces, shared component libraries, and centralized governance.

Stack blueprint

Layer

Enterprise + Compliance

Startup Speed

Media-heavy

Intranet / Portal

Gov / Regulated

Multi-brand

CMS

Contentful or Optimizely

Sanity or Payload

Sanity + Mux

Contentful or SharePoint headless

Strapi (self-host) or Payload

Contentful (spaces) or Storyblok

Frontend

Next.js (SSR + ISR)

Astro or Next.js

Next.js (image/video optimization)

Next.js (SSR, auth-gated)

Next.js or Astro (a11y focus)

Next.js (monorepo, shared components)

Search

Algolia or Azure AI Search

Typesense or Algolia free tier

Algolia + vector search

Algolia (secured API keys per role)

Typesense (self-host)

Algolia (multi-index per brand)

Auth

Entra ID or Okta

Auth.js or Clerk

Auth.js + signed media URLs

Entra ID + SCIM provisioning

Keycloak (self-host)

Auth0 (multi-tenant)

Media / CDN

Cloudinary + Akamai

Cloudflare R2 + Images

Mux (video) + Cloudinary (images)

Cloudinary (internal DAM)

Self-host media + Cloudflare CDN

Cloudinary (shared DAM, per-brand folders)

Hosting

Azure or AWS (dedicated infra)

Vercel or Netlify

Vercel + dedicated media origin

Azure or AWS (internal network)

Gov cloud (AWS GovCloud, Azure Gov)

Vercel (per-brand projects)

Observability

Datadog or Grafana Cloud

Vercel Analytics + Sentry

Vercel + Mux Data + Sentry

Datadog (internal SLA dashboards)

Self-host Grafana + Loki

Datadog (per-brand dashboards)

CI/CD

Azure DevOps or GitHub Enterprise

GitHub Actions + Vercel auto-deploy

GitHub Actions + media pipeline

Azure DevOps (internal)

GitHub Enterprise + gated deploys

GitHub Actions (monorepo triggers)

AI layer

Azure OpenAI + custom pipelines

OpenAI API (direct)

Whisper (transcripts) + LLM summaries

Azure OpenAI (internal content tagging)

Self-host LLM or Azure OpenAI (Gov)

Shared AI pipeline, per-brand config

For a detailed feature-by-feature comparison of the CMS platforms mentioned above, see the platform comparison page on this site.

Red flags for stack decisions

  • All components from a single vendor — single point of failure and zero negotiation leverage when contracts renew.
  • Choosing Kubernetes for a three-page marketing site — the infrastructure complexity will cost more than the project itself.
  • No observability layer — you'll discover performance problems and outages from user complaints, not dashboards.
  • "We'll build our own search" — six months later it's still worse than a free-tier Algolia implementation.
  • Media files stored in CMS blob storage — no CDN delivery, no on-the-fly transformations, no signed URLs for access control.
  • Skipping the auth layer decision — bolting on authentication after launch is the most expensive integration change you can make.