
Explaining Headless CMS to a web designer
22 Aug 2022

If you knew that your tech stack is literally killing your business, would you look for CMSs your content teams prefer, or would you check what is the best CMS for developers?
WordPress powers 43.5% of the web, but if your developers are crying into their coffee, you’re not alone.
Let’s cut through the noise: choosing a content management system based on popularity is like letting a Yelp review pick your heart surgeon. Sure, WordPress is familiar. So was MySpace. But while your marketing team loves its drag-and-drop editor, your devs are stuck duct-taping APIs and praying plugins don’t implode.
Popular CMS platforms like WordPress prioritize content creators over developers, leading to:
Bloat: Your site’s backend looks like Frankenstein’s monster of plugins.
Scalability nightmares: MySQL databases buckle under 10k posts.
Developer despair: Debugging getServerSideProps at 2 a.m. isn’t a flex, it’s a cry for help.
The “best” CMS isn’t the one your cousin’s blog uses, it’s the one that lets your team build faster, sleep deeper, and scale endlessly.
Your CMS platform isn’t just a content tool, it’s the cornerstone of your tech stack. Choose wrong, and you’ll bleed:
Money: Approximately $10k/month on hosting + dev firefighting (What do I mean by firefighting? This is when developers waste time/money fixing preventable issues caused by the CMS).
Talent: Top engineers flee bloated codebases.
The fix? Stop letting marketers drive tech decisions. The best CMS for developers is often the least hype, but we’ll get to that.
Developers want a Ferrari, content creators want a minivan, and most CMSs force you to drive a Frankencar that’s neither.
At its core, the CMS debate is a battle between two tribes:
Developers: They crave control, performance, and future-proofing.
Content Creators: They need simplicity, speed, and WYSIWYG (“What You See Is What You Get”) ease.
Let’s break down their conflicting wishlists and explain why popular CMSs like WordPress fail to satisfy either.
Drag-and-drop editors: No-code page builders (e.g., WordPress’s Gutenberg).
Prebuilt templates: “Landing page in 5 clicks” magic.
One-click publishing: No Git, no terminals, no panic.
Example:
A marketing team at a startup uses WordPress’s block editor to launch a campaign in 20 minutes. They’re happy until the site crashes under traffic.
Clean APIs:
// BCMS: Typed content fetching interface BlogPost { title: string; content: string; seo: { description: string }; } const post = await getEntry<BlogPost>('blog', 'my-post');
vs. WordPress’s content.rendered chaos.
Headless flexibility:
Flexibility in using React, Svelte, or vanilla JS—no PHP jail.
Zero plugin dependency:
WordPress devs spend 30% of their time debugging plugin conflicts. BCMS models content in code, no plugins needed.
Scalability:
Serve 100k posts via CDN (BCMS) vs. WordPress’s MySQL timeouts.
Scenario: A team picks WordPress because the marketing team loves its UI. Six months later:
Developers are fighting wp-json performance issues and ACF field spaghetti.
Content Creators are frustrated because “the site keeps breaking.”
Final result: A slow, insecure site that pleases no one.
Code comparison:
// WordPress: Fetching a post’s ACF field const post = await fetch('/wp-json/wp/v2/posts/1'); const price = post.acf?.product_price; // Pray the plugin is active
// BCMS: Structured content, no plugins const product = await getEntry('product', 'widget-x'); const price = product.price; // TypeScript knows it’s a number
Slower time-to-market: Devs waste time hacking CMS limits instead of building features.
Higher costs: 15k/year on hosting + 50k/year on dev firefighting.
Talent exodus: Senior devs quit to escape legacy codebases.
The fix? Choose a CMS that balances both worlds:
For content creators: Intuitive UI for daily updates.
For developers: Headless architecture, clean APIs, and no PHP.
(Spoiler: BCMS does all these)
Choosing WordPress for developers is like building a skyscraper on quicksand; it works until everything collapses. Let’s expose why WordPress (and similar giants) crumble under modern web development demands:
Problem: WordPress markets 60k+ plugins as “flexibility.” Reality? It’s vendor lock-in disguised as choice.
Example: Want a custom product field?
WordPress: Install ACF → fight PHP templates → pray it works with Gutenberg.
BCMS: Define a Product type in TypeScript:
interface Product { name: string; price: number; description: string; }
Done. No plugins.
Code Snippet:
// WordPress: Fetching an ACF field const product = await fetch('/wp-json/wp/v2/products/1'); const price = product.acf.price; // Might be a string, number, or undefined
// BCMS: Typed and reliable const product = await getEntry<Product>('products', 'widget-x'); const price = product.price; // TypeScript says it’s a number
Result: WordPress devs waste hours debugging plugins. BCMS devs ship features.
Case study: A media site with 50k posts:
WordPress: MySQL queries take 8+ seconds. Caching plugins add more bloat.
BCMS: Contents are cached globally via CDN. 100k posts? TTFB (Time to First Byte) stays under 200ms.
Why it matters:
WordPress: Scales like a rusty bicycle, works until the wheels fall off.
Headless CMSs: Scale like Teslas, effortless acceleration.
Let’s dive into WordPress’s dirty secrets:
PHP 7.4: Outdated, insecure, and slow.
Themes/Plugins: Abandoned codebases littered with eval() and SQL injections.
Security: 90% of hacked CMS sites are WordPress (Wordfence, 2023).
Cost of “Familiarity”:
Time: 15+ hours/month patching vulnerabilities.
Money: $20k+/year on security plugins and audits.
Sanity: Endless functions.php hacks.
WordPress vs. developer needs:
TABELA
Code comparison:
// WordPress: 2024 logic in 2006 PHP add_filter('the_content', function($content) { return str_replace('foo', 'bar', $content); });
// BCMS: Modern TypeScript async function transformContent(entryId: string) { const post = await getEntry<BlogPost>('posts', entryId); return post.content.replace('foo', 'bar'); }
Choosing a CMS is like picking a roommate. You want someone who cleans up after themselves, doesn’t eat your food, and won’t set the kitchen on fire.
Forget popularity contests. Here’s what actually matters when picking a CMS as a developer:
Why it matters: Your CMS should grow with your business, not hold it back.
Key features:
CDN caching for global content delivery.
Support for incremental static regeneration (ISR).
Case study:
WordPress: A site with 50k posts suffers from MySQL bottlenecks (TTFB: 2s+).
BCMS + Astro: CDN caching + static builds keep TTFB (Time To First Byte) under 200ms.
Why it matters: A CMS shouldn’t be a hacker magnet. PHP is hacker candy. PHP’s outdated code is like leaving your front door wide open—hackers love it. With 40% of hacked CMS sites running PHP, it’s the digital equivalent of a neon ‘BREAK IN HERE’ sign.
Prioritize:
No PHP or legacy codebases.
Regular security audits and automatic updates.
Why it matters: Hidden costs (time, plugins, hosting) kill budgets.
WordPress trap:
$300/year for hosting.
$1k+/year for premium plugins.
10+ hours/month debugging.
BCMS advantage:
Free tier for small projects.
Predictable pricing with no plugin tax.
Before choosing a CMS, ask:
Can I model content without fighting the CMS?
Does it integrate with my preferred framework?
Will I spend more time building or debugging?
For developers, a CMS isn’t just a tool, it’s a foundation. Here are five non-negotiable features that separate modern, developer-first platforms from legacy systems:
Why it matters: A CMS should prioritize clean, well-documented APIs (REST/GraphQL) to integrate seamlessly with any frontend framework.
Ideal features:
REST/GraphQL endpoints with typed responses.
SDKs for frameworks like React, Astro, or Svelte.
No parsing content.rendered or nested _embedded fields.
Example:
// BCMS: Fetch content with TypeScript autocomplete interface BlogPost { title: string; content: string; } const post = await bcms.getEntry<BlogPost>('blog', 'my-post');
// WordPress: Unstructured, unpredictable data const post = await fetch('/wp-json/wp/v2/posts/1'); const title = post.title?.rendered; // "Rendered"? Why?
Why It Matters: Typed content models reduce runtime errors and streamline development.
Example:
//All types coming from the BCMS are auto generated and there is no need to manually define anything. Take a look at some of the starters and you will see where the types are imported from interface BlogPost { title: string; content: string; seo: { description: string; }; } // Fetch with autocomplete const post = await bcms.getEntry<BlogPost>('blog', 'my-post');
Key benefit: Eliminate guesswork with auto-generated types.
Why it matters: Decouple content from presentation to use modern frameworks (Astro, Svelte, React) without constraints.
Example:
<!-- Fetch BCMS content in Astro --> import { getEntries } from '@bcms/astro'; const posts = await getEntries('blog');
Key benefit: No PHP lock-in or monolithic bloat.
Why it matters: Avoid dependency hell and security risks from third-party plugins.
Example:
// Add custom validation in BCMS bcms.registerFieldValidator({ name: 'isPositiveNumber', validate: (value) => value > 0 });
Key benefit: Build features in code, no bloated plugin ecosystems.
Why It Matters: Version control isn’t just for code, it’s your content’s undo button. Edits to blog posts, product descriptions, or even SEO tags should live in tools like GitHub, where you can track changes, revert mistakes, and see who tweaked what. Think of it as a time machine for your content.
Ideal workflow:
Content changes are tracked in Git.
Rollback mistakes with git revert.
BCMS example:
# Content stored as structured data /content /blog my-post.json
Forget WordPress. These CMSs are the unsung heroes of the developer world.
Overview: API-first, TypeScript-native CMS built for modern frameworks (Astro, Svelte, React).

Main features:
Built-in CDN
typed content
code starters for popular frameworks.

No plugins required, content models defined in code.
Best For: Startups, enterprise apps, and projects needing scalability.
Drawbacks: Smaller community than WordPress.
Overview: Open source, self-hosted headless CMS.

Features:
GraphQL/REST APIs, plugin ecosystem.
Customizable admin panel.
Best For: Developers who want full control over their stack.
Drawbacks: Requires DevOps maintenance.
For the full comparison check: Strapi alternative page
Overview: React-based, TypeScript-first CMS.

Features:
No-code config meets developer flexibility.
Built-in auth and file uploads.
Best For: Full-stack React/Next.js projects.
Drawbacks: Less mature than Strapi.
Overview: Real-time content platform with GROQ query language.

Features:
Portable Text editor, customizable dashboards.
Instant content updates.
Best For: Content-heavy sites needing real-time collaboration.
Drawbacks: GROQ has a steep learning curve.
For the full comparison check: Sanity alternative page
Overview: Database-first, open source CMS.

Features:
Mirrors SQL schema, REST/GraphQL APIs.
Self-hosted or cloud.
Best For: SQL lovers and database-driven projects.
Drawbacks: Overkill for simple blogs.
Overview: GraphQL-native CMS with React admin UI.

Features:
Auto-generated GraphQL APIs.
Extensible with custom hooks.
Best For: Node.js/GraphQL enthusiasts.
Drawbacks: Limited to Node.js backends.

Overview: Git-backed CMS with inline editing.
Features:
Markdown/MDX support, visual editing.
Works with static sites (Astro, Next.js).
Best For: Static sites needing editorial workflows.
Drawbacks: Requires Git knowledge.
Overview: Lightweight, self-hosted headless CMS.

Features:
Simple REST API, no database required.
Easy setup.
Best For: Small projects and prototypes.
Drawbacks: Limited scalability.
Overview: Hybrid (headless + traditional) CMS.

Features:
In-context editing, headless APIs.
Best For: Teams needing a mix of editorial control and developer flexibility.
Drawbacks: Steeper setup than pure headless options.
Overview: Cloud-based headless CMS with a strong focus on enterprise scalability.

Features:
REST/GraphQL APIs, rich media management, and multi-language support.
User-friendly interface for content teams.
Best For: Large enterprises and teams needing a polished, out-of-the-box SaaS solution.
Drawbacks:
Pricing scales steeply with content types and API calls.
Proprietary platform; difficult to self-host or migrate away.
Less control over the backend compared to open-source options like BCMS
For the full comparison check: Contentful alternative page
Popular CMSs prioritize ease-of-use over flexibility, leaving developers shackled to legacy code and plugins. Modern alternatives like BCMS offer:
Freedom: Use any framework (React, Astro, Svelte).
Scalability: CDN caching, serverless-ready.
Sanity: No PHP, no plugins, no technical debt.
Ready to break free from legacy CMSs? Try BCMS and build with tools developers love.
Get all the latest BCMS updates, news and events.
By submitting this form you consent to us emailing you occasionally about our products and services. You can unsubscribe from emails at any time, and we will never pass your email to third parties.
There are many actionable insights in this blog post. Learn more: