Should You Build with React, Vue, or Just HTML? A 2026 Framework Reality Check
Framework choice has real downstream cost. Here's how we decide between React, Vue, Astro, plain HTML and everything else for client projects in 2026.
“Which framework should we use?” is the wrong first question. The right one is: “What is the user doing on this page, and how often does our content change?”
Once you can answer those, the framework picks itself. Here’s how we walk clients through it.
The categories that actually matter
Forget React vs. Vue. The meaningful distinction is between three categories of website:
- Content sites - marketing pages, blogs, docs, product information. Mostly read-only. Visitors land, read, click a CTA, leave.
- Interactive sites - sites with significant user input: configurators, calculators, dashboards, multi-step forms.
- Applications - software that happens to live in a browser: SaaS dashboards, internal tools, social apps, anything with auth and persistent state.
Each category has a sensible default. Mixing them up is where projects go sideways.
Content sites: stop reaching for React
For category 1, you do not need React. You probably don’t need Vue. You almost certainly don’t need Next.js or Nuxt.
What you need is:
- A static site generator (Astro, Eleventy, Hugo) that ships HTML with minimal JavaScript
- A CMS the editors are happy with (Sanity, Decap, Contentful, headless WordPress)
- Maybe one or two interactive components (a contact form, a search box) added as “islands”
Astro has become our default for this. Its conceit - render everything as static HTML, opt into interactivity per component - matches how content sites actually work. The result: 30KB JavaScript payloads instead of 300KB. LCP under a second. Perfect Lighthouse scores without trying.
The pitch for choosing Next.js for a marketing site is usually “we might want SSR later” or “we need ISR for blog posts.” Both of those features exist in Astro now. And the cost of Next.js - bigger bundles, more complex builds, harder deploys - adds up fast for a team that doesn’t need them.
Interactive sites: this is where frameworks earn their keep
If your site has serious interactive surface - a multi-step booking flow, a real-time configurator, charts that update on user input - you do want a framework. The question is which one.
React
The pragmatic default. Largest ecosystem. Easiest to hire for. Newer versions (React 18+, Server Components) are genuinely good. Pair with Next.js for SSR/SSG, or Remix for tighter integration with backend mutations.
Choose React when: you’ll need to hire developers, you want maximum library availability, your team already knows it.
Vue
Often more pleasant to write. Smaller bundle. Better defaults. Composition API is excellent. Pair with Nuxt for SSR.
Choose Vue when: you have flexibility on hiring, your team prefers a less ceremonial framework, or you’re coming from a Laravel background where Vue feels natural.
Svelte / SvelteKit
The smallest bundles. Compiles to vanilla JS. Lovely developer experience.
Choose Svelte when: performance is paramount and you don’t need the React ecosystem. Hiring is harder.
Solid / Qwik
Newer entrants with serious performance stories. Qwik in particular is designed for sites that need to be both highly interactive and lightning fast.
Choose these when: you’re building something cutting-edge and your team is comfortable on the bleeding edge.
For most agency client work, we land on React + Next.js for interactive sites, simply because of ecosystem and hiring. For our own internal tools, we sometimes pick Svelte or Solid.
Applications: the rules change
If you’re building software - auth, state, real-time, dashboards, mutations - the calculus shifts entirely.
- Bundle size matters less because users are coming back daily and assets are cached.
- Developer velocity matters more because feature work is constant.
- Ecosystem matters most because you’ll need auth libraries, form libraries, charting libraries, data fetching, all of it.
Here, React is the obvious choice for 80% of cases. Specifically:
- Next.js (App Router) for content-heavy applications, SaaS dashboards with SEO needs, or apps that benefit from server components.
- Remix for apps where forms and mutations are central (e-commerce, admin tools).
- Vite + React for SPAs behind an auth wall where SEO doesn’t matter.
Outside React, SvelteKit is a legitimately strong choice for full-stack apps if your team is up for it. Nuxt 3 is excellent if you prefer Vue.
The “just HTML” case
For genuinely simple sites - a single landing page, a contact form, a small business with five pages - plain HTML and CSS with a sprinkle of vanilla JS is still a fantastic answer. Astro is essentially this with better ergonomics. There’s no shame in shipping a .html file.
What’s not a good idea: bringing in jQuery, Bootstrap, and 8 plugins from CodeCanyon. That stack was reasonable in 2014. In 2026, you’d pay performance, accessibility and security debt for the rest of the site’s life.
Common mistakes we see in client briefs
”We need a React site because we’re using ChatGPT API”
You probably don’t. The ChatGPT API is a server-side concern. The front-end can be plain HTML calling your serverless function.
”We chose Next.js because we’ll have a dashboard later”
A marketing site that might grow a dashboard is two different products. Build the marketing site optimally (Astro), and put the dashboard on its own subdomain in Next.js when the time comes.
”We picked WordPress because the team knows it”
Sometimes this is correct (see our WordPress vs. Astro comparison). Sometimes the team’s WordPress knowledge is page builder knowledge, not real WordPress skill, and you’ll have all the pain of WordPress without the benefits.
”Our developer recommended Gatsby/Remix/Solid because they’re learning it”
Hard one. Pick the tech your team will own, not the tech your developer wants to put on their CV.
The cost question
Framework choice has real downstream cost:
- Astro/static site: $0–20/month hosting. Builds in seconds. Deploys are pure CDN pushes.
- Next.js/Nuxt on Vercel: $0–60/month for small-medium traffic. ISR and image optimisation add nuance.
- Self-hosted React app: $40–200/month depending on database and traffic.
- Headless WordPress + Next.js: $80–250/month between managed WP host and Vercel.
Over five years, the difference between a static stack and a headless stack is $5,000–$15,000 - often more than the original build cost.
A working rule of thumb
When in doubt, ask:
- Is the content updated more than weekly? If no → Astro.
- Does the site have significant logged-in or interactive functionality? If yes → React/Vue/SvelteKit.
- Will you hire developers in the next year? If yes → bias toward React.
- Is performance the differentiator? If yes → bias toward Astro, SvelteKit or Qwik.
- Is the team already productive in something? If yes, and the framework can do the job, use that.
Pick the framework that minimises future regret, not the one that’s trending on Hacker News this month.
Need help picking a stack? Get in touch - we’ll do a 30-minute call walking through your team and your goals, and recommend a stack you’ll be happy with in three years, not three weeks.