[ For interfaces with real state in them ]
React is the right answer for dashboards, editors, configurators and anything where the interface holds state. It is the wrong answer for a brochure site, and choosing it there costs you speed and search visibility for nothing.
React is the right answer for dashboards, editors, configurators and anything where the interface holds state. It is the wrong answer for a brochure site, and choosing it there costs you speed and search visibility for nothing.
Tell us what state the screen has to holdData from your API belongs in a query cache, not in component state. Getting that boundary right removes most of the bugs these applications otherwise have.
Bundle size measured in CI. React applications get slow one dependency at a time, and nobody notices until the phone does.
Keyboard paths, focus management and labels built in. Retrofitting accessibility into a component tree is far more expensive than building it right.
Marketing pages and content sites are better and faster served rendered. We will say so even though it is a smaller project for us.
Data-heavy interfaces with tables, filters, charts and bulk actions — the work React is genuinely best at, built to stay fast at ten thousand rows.
Builders, planners and product configurators where the interface holds complex state, with undo, autosave and validation that explains itself.
A component library with tokens, documentation and tests, so several teams build screens that look like one product.
Interfaces with genuine state, yes. Content and marketing pages, usually not — those want server rendering and less JavaScript.
What is server data, what is URL state, what is genuinely local. Most React messes are a state boundary that was never decided.
A small set of primitives with the design tokens behind them, so screen fifteen looks like screen one and takes a fraction of the time.
TanStack Query for fetching, caching, retries and invalidation. Hand-rolled fetch-and-useState is where the loading and error bugs live.
Route-level code splitting, list virtualisation, memoisation where the profiler says so — not everywhere out of superstition.
Vitest on logic, Playwright on the three or four paths that must never break. Not every component, the ones that carry the business.
React is a good answer to a specific question: how do we keep a complicated, changing interface in step with its data. Dashboards, editors, configurators and internal tools are exactly that, and React with a proper query layer handles them better than the alternatives.
It is a poor answer for a content site. Shipping a large JavaScript bundle to render text that could have been HTML costs load time, costs search visibility and buys nothing. We build plenty of React and we turn down the requests where it would make the result worse.
Data that came from an API needs caching, invalidation and retries. Putting it in useState is the root of most bugs in these applications.
React applications get heavy gradually. A size budget that fails the build is the only thing that reliably stops it.
Wrapping everything in useMemo adds complexity and usually no speed. We measure first and optimise the two places that matter.
The question is no longer whether to use React but how much of it should run in the browser. Sending less JavaScript is now the mainstream position rather than a contrarian one.
Actions, form state and the compiler cut boilerplate and much of the manual memoisation that used to fill these codebases.
Redux for server data has largely gone. What remains in a store is genuinely client state, and it is far smaller than it used to be.
Create React App is retired. New projects start on Vite or a framework, and cold start times are seconds rather than minutes.
If it is a content or marketing site, usually not — server-rendered HTML will load faster and rank better for a fraction of the work. If it is an application with real interface state, dashboards, editors, complex forms, then React is a strong choice. We are happy to recommend the smaller project when that is the right one.
Let’s talk about your react project. No obligation, just a conversation.
Next service
Angular Development