"Best hosting for a React app" is a trick question, because a "React app" is really three different hosting problems wearing one name. There's a pure client-side SPA that builds to static files; there's a React app on an SSR/SSG framework that needs a framework-aware host; and there's a full-stack app that ships its own backend and database. The right host follows directly from which one you have — so figure that out first.
The fork: which kind of React app is it?
- A static SPA (Vite/CRA) — the whole app runs in the browser and builds to static HTML, JS, and CSS. There is no server to run; a CDN is enough.
- An SSR/SSG framework app (Next.js, Remix, Astro) — the framework renders HTML on the server (or at build time) for SEO, streaming, and faster first paint. It needs a host that runs the framework's server adapter.
- A full-stack app (React + your own API + DB) — you own a backend process and a database alongside the client. You need somewhere to run that server, not just serve the bundle.
Your answer maps straight to the table below.
The three cases, and where each one goes
| If your React app is... | Host it on | Why | Watch-out |
|---|---|---|---|
| A static SPA (Vite/CRA) | Netlify / Vercel / Cloudflare Pages / GitHub Pages / Render static | It builds to plain static files, so any static or CDN host serves it cheaply — often free | Configure an SPA fallback so every route rewrites to index.html, or deep links 404 |
| An SSR/SSG framework app (Next/Remix/Astro) | A framework-aware host (see the Next.js guide) | SSR, streaming, ISR, and server components need a host that runs the framework's server adapter, not just static files | A plain static/CDN host silently drops SSR/ISR — you lose the reason you chose the framework |
| Full-stack (React + own API + DB) | A PaaS (Railway / Render / Fly) or a split frontend + serverless DB | You need a place to run the backend process and connect a database, not only serve the client bundle | Splitting the frontend and API across hosts adds CORS, env, and deploy-coordination work |
Three recommendations
A static SPA (Vite or CRA)
Host it on any static or CDN host and pick on developer experience and price, not capability — the build output is the same files everywhere. Cloudflare Pages tends to be cheapest on bandwidth, while Netlify and Vercel give the smoothest developer experience. GitHub Pages or a Render static site work too. Whichever you choose, set the SPA fallback so every route serves index.html.
An SSR/SSG framework app (Next/Remix/Astro)
You need a framework-aware host that runs the server adapter — a plain CDN will not do, because it cannot render on the server. The choice depends on the framework, so start with the Best Hosting for Next.js guide, which covers the SSR/ISR host trade-offs directly.
A full-stack app (React + your own API + DB)
You have a backend and a database to run, not just a bundle to serve. That is its own decision — see the Best Hosting for a Full-Stack App guide, which covers running a PaaS like Railway, Render, or Fly versus splitting a static frontend from a serverless database.
The trap to avoid
There are two mirror-image mistakes. The first is paying for a server or SSR host to run a plain static SPA — a SPA is just files, so a CDN serves it for free and a running instance is wasted money. The second is the opposite: deploying an SSR framework app somewhere with no framework support, then quietly losing SSR and ISR because the host only serves static output. Match the host to the case and neither happens.
How to choose in 60 seconds
- Is it a client-only SPA (Vite/CRA) with no server? Any static/CDN host: Cloudflare Pages, Netlify, Vercel, or GitHub Pages. Set the index.html fallback.
- Is it an SSR/SSG framework app (Next/Remix/Astro)? A framework-aware host — start with the Next.js hosting guide.
- Does it ship its own backend API and database? A PaaS (Railway/Render/Fly) or a split frontend + serverless DB — see the full-stack hosting guide.
A note on pricing
Static hosting is the cheap end of this — a SPA is just files on a CDN, and most static hosts have a genuinely usable free tier. The honest caveat is the same as everywhere else: usage-based plans bill by bandwidth and build minutes (great while you're small, watch them at high traffic), while an always-on instance bills whether or not it's busy. Limits and prices change often, so verify current numbers on each provider's live pricing page before you commit.
FAQ
Do I need special hosting for a React SPA?
No. A client-side React SPA (Vite or CRA) builds to plain static files — HTML, JS, and CSS. Any static host or CDN serves it, so Netlify, Vercel, Cloudflare Pages, GitHub Pages, or a Render static site all work. The one requirement is an SPA fallback that rewrites unknown routes to index.html.
Is Vercel required for React?
No. Vercel is excellent, but it is not required — it shines specifically for Next.js, which Vercel builds. A plain React SPA is just static files and runs anywhere, including Cloudflare Pages, Netlify, or GitHub Pages. Choose on developer experience and price, not on a supposed requirement.
SPA vs SSR — which should I host?
It depends on your SEO and performance needs. A client-side SPA is simplest and cheapest to host, and fine when search visibility and first-paint speed are not critical. If you need server-rendered HTML for SEO or faster first loads, use an SSR framework (Next/Remix/Astro) — and then you need framework-aware hosting, not a plain CDN.
Building the React app itself, not just choosing where to put it? The MVP Machine turns a spec into a shipped product.