A tangle of cables beside a neat stack of building blocks, in black-and-white pixel art
Build 7 min read

htmx vs React for a Small Business Website: Why We Build Without a Framework

The short answer

For most small-business websites, plain HTML with htmx is the better choice. It ships about a sixth of the JavaScript React does, needs no build step, hands Google finished pages, and costs less to host and maintain. React earns its weight in app-like tools with lots of live state, not in sites whose job is to load fast and bring in customers.

If you're paying someone to build your business website, you'll eventually hear a framework name: React, Next.js, Vue. It sounds like a technical detail. It isn't. The framework decides how heavy every page is, how quickly it shows up on a customer's phone, how easily Google reads it, and how much it costs to keep running.

We build our sites on plain HTML with htmx, hosted on Cloudflare. We've shipped in React too. Here's the honest comparison, and why one of them is usually the right call for a small business.

What htmx and React actually are

React is a JavaScript library for building user interfaces in the browser. The browser downloads your app's code, runs it, and the code draws the page. It's the default at many agencies and the base of Next.js.

htmx takes the opposite approach. The server sends finished HTML, the language browsers already speak, and htmx (one small file) lets any link or form fetch a fresh piece of HTML and swap it into the page without a reload. The page works before any JavaScript runs; htmx just makes it feel instant. Version 4, released in August 2026, rebuilt it on the browser's own fetch(), so it leans on what browsers already do instead of carrying its own plumbing.

The numbers, side by side

We measured the current releases, htmx 4.0 and React 19.3, minified and compressed the way a browser downloads them:

htmx + HTMLReact
Library sizeAbout 13 KB (htmx 4.0)About 80 KB (React 19 + React DOM), before routing, data fetching or your own code
Build stepNone. The files you write are the files that ship.Required: a bundler, a toolchain and a pile of dependencies to keep updated
What Google getsFinished HTML in the first responseAn empty shell unless you add server rendering (Next.js), which adds a server to run
HostingStatic files on a global network, plus small server functionsStatic for simple apps; a Node server for server rendering
MaintenanceVery little. One file you can pin forever.Regular dependency and framework upgrades
Best forBusiness sites, booking, quotes, forms, portals, dashboardsApp-like tools with lots of live state: editors, design tools, complex builders

Those kilobytes matter most where your customers are: on a mid-range phone, on cellular, in a parking lot. Every byte of JavaScript has to be downloaded and run before a React page is usable, and phones are slow at running it. That shows up in Google's Core Web Vitals, which feed straight into rankings. We covered why that matters for local search in Why Fast Websites Rank Higher in Local Search.

Why the server-first approach is better for SEO

Search engines rank what they can read. With htmx, every page arrives as complete HTML: headings, text, links, prices, your address. A crawler sees exactly what a customer sees, on the first request.

A React site rendered in the browser starts as an almost empty page that fills in after the JavaScript runs. Google can run JavaScript, but it does so later and less reliably, and other crawlers and AI search tools often don't. The usual fix is server rendering with Next.js, which works, but now you're running a server to rebuild what plain HTML gives you for free.

We've built in the big frameworks. We chose this anyway.

This isn't a preference from someone who only knows one tool. Look through our code and you'll find web apps in React and TypeScript, iPhone and Android apps in Flutter and Dart, native Swift, back-end and systems work in Rust, Go and C, smart contracts in Solidity, and data and automation in Python. We pick per job.

For websites, after shipping React projects, the job kept pointing the same way: send HTML, keep the page light, add interactivity only where it earns its place. This site and our client sites run that way on htmx 4: forms, logins, client quotes and admin screens are HTML the server renders, with no page-level JavaScript to maintain.

Why our sites don't look like templates

Frameworks usually come with a component kit, and component kits make sites look alike. Building from plain HTML and CSS means every layout is drawn for the business it's for. Ours lean on a few signatures you can see on this page: editorial grids, black-and-white pixel art, and moving dither patterns.

Those choices are also engineering choices. Each pixel-art illustration is a two-color image of a few kilobytes. The moving dither on our homepage is a few kilobytes of code drawing to a canvas, not a video. Distinctive and light turn out to be the same goal: a design that's yours, and a page that still loads in a blink on a phone.

Where Cloudflare fits

The HTML is served from Cloudflare's network, so a customer in Fort Worth gets it from a data center nearby, not from one server across the country. The parts that need a server (contact forms, logins, quotes, emails, payments) run as small Cloudflare Workers, with the data in Cloudflare's D1 database. There's no server for you to patch and nothing to restart at 2 a.m. The short version is on our homepage under Method.

When we'd still pick React (or something else)

  • A tool, not a site. A drag-and-drop editor, a design canvas or a builder with lots of live state on screen is React's home turf.
  • A phone app. For iPhone and Android we use Flutter, so one codebase covers both stores. The app and the website can share the same Cloudflare back end.
  • Heavy computing. Number-crunching or graphics may call for Rust compiled to run in the browser, used just where it's needed.

For the website that has to load fast, rank, and turn a visitor into a call, plain HTML with htmx wins almost every time.

Frequently asked questions

Is htmx good for SEO?

Yes. With htmx the server sends finished HTML, so every page's text and links are in the first response Google downloads. Nothing has to run in the browser before a crawler can read the page, which is the main SEO risk with sites rendered by React in the browser.

Can htmx handle forms, logins and payments?

Yes. Those are server jobs, and htmx is built around talking to a server: a form posts, the server checks it, and htmx swaps in the result without a page reload. This site runs that way on htmx 4: the contact form, logins, client quotes and our admin tools all send a form and get finished HTML back.

Is React a bad choice for a business website?

Not bad, just usually more than the job needs. React is excellent for app-like tools with lots of on-screen state, such as editors, dashboards and drag-and-drop builders. A site whose main job is to load fast, rank and turn visitors into calls rarely needs it.

Can you move an existing WordPress or React site to plain HTML?

Yes. We rebuild it page by page on HTML and htmx, keep the same URLs so search rankings carry over, and host it on Cloudflare. That's what Catalyst Rebuild does.

Want a site built this way?

We build fast, hand-made websites and apps for small businesses on HTML, htmx and Cloudflare, quoted per job. Moving off WordPress or React? We keep your URLs so your rankings come with you.