Not every project needs React. Not every WordPress site needs to be simple.
That sentence sounds obvious until you sit in a client meeting where someone wants a "modern, fast, interactive website", and the default answer becomes "let's use React" without anyone asking what the project actually needs to do.
Stack decisions made for the wrong reasons are one of the most common sources of budget overruns, missed deadlines, and systems that are hard to maintain six months later. This article is not a tutorial. It is a decision framework, the kind of conversation we have internally before writing a single line of code.
First: What Are We Actually Comparing?
WordPress and React solve fundamentally different problems, and that's the root of most confusion.
WordPress is a content management system. It handles content creation, user permissions, routing, database interactions, media uploads, and rendering all out of the box. Its ecosystem of plugins and themes exists precisely to let non-developers manage digital products independently.
React is a UI library. It renders interfaces efficiently using a component-based model and a virtual DOM. It does not manage content, handle authentication by default, or know anything about your database. It solves the problem of building complex, stateful, interactive frontends.
These two tools are not really competing. The question is rarely "which one," but "which combination, and why."
The Three Architectures You'll Actually Face
1. Traditional WordPress
WordPress renders pages server-side using PHP templates. The browser receives fully formed HTML. Plugins, themes, and the admin panel all work as expected. Content editors can publish without touching code.
This architecture works extremely well for most of the web: blogs, institutional sites, news portals, landing pages, e-commerce with WooCommerce, and anything where content is the product.
The common mistake is treating this as a "legacy" approach. It is not. It is a mature, well-supported architecture with a massive ecosystem. Choosing it deliberately is smart. Avoiding it out of fashion is not.
2. Headless WordPress
Here, WordPress is decoupled from the frontend. It still manages content and exposes it via its REST API or GraphQL (usually via WPGraphQL). A separate frontend — typically built in Next.js or another React framework — consumes that data and handles rendering.
This architecture makes sense when the frontend requirements exceed what WordPress templates can deliver: complex animations, highly interactive components, multi-platform content distribution (website, mobile app, and digital kiosk from the same API), or very strict Core Web Vitals targets.
The trade-off is real. You now have two systems to maintain, deploy, and monitor. Hosting costs go up. The content preview experience for editors degrades unless you build a dedicated preview workflow. ACF or similar plugins become critical for structured content modeling. And your team needs to be comfortable with both ecosystems.
Headless is a valid choice. It is not, however, a free upgrade.
3. Pure React (or Next.js) Without WordPress
This is the right choice when content is not the primary product — when the application is the product. SPAs, dashboards, internal tools, SaaS platforms, and anything with complex real-time interactivity belong here.
The question to ask is simple: does this project have more in common with a document or with a software application? If the answer is "application," React is at home. If the answer is "document with some dynamic elements," you're likely over-engineering.
When React Is the Right Tool
React earns its place when the interface has genuine complexity that cannot be managed cleanly with server-rendered templates and JavaScript sprinkles.
Use React (or a React framework like Next.js) when:
You are building an SPA with complex routing and application state — a dashboard, a CRM, a project management tool, an analytics interface.
Multiple components need to share and react to the same state in real time — think collaborative tools, live data feeds, or multi-step forms with interdependent fields.
The user experience requires transitions, animations, and interactions that feel more like a native app than a webpage.
You are distributing the same content or functionality across multiple surfaces (web, mobile, or other digital surfaces) from a single data source.
Your team already has strong React expertise and the project timeline justifies the architecture.
When React Is the Wrong Tool
This section is more important than the previous one, because the cost of choosing React unnecessarily is often invisible until it becomes very visible, usually at launch or during the first major content update.
Do not default to React when:
The primary deliverable is content. A blog, a portfolio, a corporate website, an e-commerce store. These are documents, not applications. WordPress handles them with a fraction of the infrastructure.
The client team needs to manage content independently. A headless React frontend requires developer involvement for workflow issues that a standard WordPress setup resolves natively — preview states, draft management, revisions, media libraries.
SEO is a primary concern and your team does not have experience implementing SSR or SSG properly. A misconfigured React SPA can rank worse than a well-structured WordPress site, not better.
The budget does not support two independent systems. Headless architecture means two deployments, two environments to monitor, and two failure surfaces. For smaller projects, this cost is rarely justified.
The interactivity requirements can be met with JavaScript enhancements on a server-rendered page. Not every dynamic element needs a React component.
Common Mistakes That Make Projects More Expensive
These are patterns we see regularly in projects that come to us after things went wrong, and in early decisions that seem reasonable until they compound.
Choosing headless because it sounds more modern. Headless WordPress requires significantly more setup, more tooling, and more ongoing maintenance than traditional WordPress. If the requirement driving the decision is "a fast website," that problem is solved more reliably with performance-optimized traditional WordPress than with an under-configured Next.js frontend.
Building a CMS in React from scratch. Custom content management, admin panels for non-technical users, media management, and role-based access are solved problems in WordPress. Rebuilding it in React is months of work that could be redirected to product features. Use the right tool for content infrastructure.
Underestimating the preview problem in headless setups. Content editors in a headless environment cannot preview drafts the same way they can in traditional WordPress. Building a reliable preview workflow is non-trivial and often underestimated in project scopes. Factor it in before committing to the architecture.
Treating React as a performance solution without addressing the real bottlenecks. Slow websites are usually slow because of unoptimized images, render-blocking scripts, or poor server response times — not because of the rendering architecture. React does not automatically produce fast websites. A well-configured WordPress with proper caching and a CDN often outperforms a poorly implemented React frontend.
Ignoring long-term ownership. Who will maintain this after launch? A React + headless WordPress stack requires a developer to make changes that a content editor could handle in traditional WordPress. If the client team is not technical, that dependency has a cost that compounds over time.
A Practical Decision Framework
Before choosing a stack, answer these questions honestly:
Who manages content after launch? If non-developers need to manage the site independently, WordPress's native CMS capabilities are valuable. Headless makes content management harder, not easier.
What is the primary interaction model? Is this primarily a reading experience with some dynamic elements? Traditional WordPress. Is this primarily an application where users perform actions, manage data, and navigate complex state? React.
What is the realistic maintenance budget? Two independent systems cost more to maintain. If the project does not have ongoing technical support, simpler architecture reduces risk.
Is the performance requirement actually architectural? Most performance problems are solved with caching, image optimization, and a CDN — not with a framework change. Measure before you architect.
Does your team have the expertise to execute both sides well? A well-built WordPress site outperforms a poorly built React site in every dimension. Stack selection is also a team capability question.
The Combination That Actually Works
When headless WordPress and React are genuinely the right choice, the architecture that works is not accidental. It requires deliberate decisions: structured content modeling in WordPress using ACF or similar tools, a well-defined API contract between the CMS and the frontend, a proper preview workflow for content editors, and a deployment pipeline that handles both systems reliably.
The sites and applications we are proudest of are not the ones built with the most sophisticated stack. They are the ones where the architecture matches the problem — where content editors have genuine autonomy, where performance is measurable and maintained, and where the team that inherits the project after launch can work on it without us.
That is what good stack selection actually looks like.