Every month someone arrives with the same sentence: “we want to move off WordPress and rebuild in React.” About half the time that is the right call. The other half, they are about to spend twelve thousand dollars solving a problem that was never technical.
So before we quote anything, we run the same five questions. They take twenty minutes and they have saved clients more money than any optimization we have ever shipped.
1. Who edits the content, and how often?
This is the question that decides most projects, and it has nothing to do with engineering taste. If a marketing team publishes three times a week and needs to restructure pages without filing a ticket, a mature CMS earns its keep. WordPress with a properly configured editor — not a plugin pile — is genuinely hard to beat for that.
If content changes four times a year and the real product is a logged-in experience, the CMS is overhead you maintain forever. That is where a React front end starts paying for itself.
The right question is not “which is more modern?” It is “who will be editing this on a Tuesday afternoon, and will they need us?”
2. Is the hard part the content, or the logic?
Pages of text, images and forms are a content problem. Pricing rules, availability calendars, role-based dashboards, multi-step approvals and anything that talks to another system are a logic problem.
Page builders can fake logic for a while. The cost shows up later, as a stack of plugins that each own a piece of the behaviour and none of which know about the others. When we are called in to rescue a site, this is almost always the shape of the wreck.
- Mostly content: stay on a CMS. Invest the budget in design, speed and search instead.
- Mostly logic: build the application. Keep a CMS behind it only if editors need one.
- Genuinely both: headless. WordPress for content, React for the experience.
3. What does the total cost of ownership look like in year three?
Build cost is the number everyone compares. It is the less interesting one. What matters is the sum of hosting, licences, updates, security incidents and the developer time to make a change eighteen months from now.
| Factor | WordPress | React + Node.js |
|---|---|---|
| Initial build | Lower | Higher |
| Editor independence | High | Needs a CMS or admin |
| Custom logic cost | Rises sharply | Flat and predictable |
| Security surface | Plugins and core | Your own dependencies |
| Hiring pool | Very large | Large, more expensive |
Neither column is the winner. The point of the table is to make the trade explicit before anyone falls in love with an architecture.
4. What is your performance requirement, honestly?
“It needs to be fast” is not a requirement. A Core Web Vitals target is. We write one into every scope: a Largest Contentful Paint figure on a mid-range Android over a throttled connection, measured on the real site, not a local build.
Both stacks can hit good numbers and both can miss badly. A lean WordPress theme with a sane image pipeline routinely beats an over-bundled React app. The technology does not make you fast — the budget you agree to defend does.
What we measure before and after
- Largest Contentful Paint on a throttled 4G connection
- Interaction to Next Paint on the busiest interactive page
- Cumulative Layout Shift with real ads and embeds present
- Total JavaScript transferred on first load
5. What happens if we walk away?
The last question is the one agencies rarely volunteer. Whatever gets built, you should be able to hand it to another team without a negotiation. That means the repository, the credentials, the deployment process and a handover document in your possession on the day you pay the final invoice.
If a proposal cannot survive that question, the stack is not the problem.
The short version
Choose WordPress when content is the product, editors need autonomy and the logic is shallow. Choose React and Node.js when the logic is the product, the experience matters more than the page count, and you have or can hire the capability to keep it alive. Choose headless when both halves are genuinely true — and accept that you are maintaining two systems in exchange.
If you are weighing this up right now, send us the site and the goal. We will tell you which way we would go and why, and we are happy for that answer to be the one that costs you less.
