- Next.js on Cloudflare uses the OpenNext adapter on Workers rather than Pages.
Cloudflare Pages doesn't run always-on servers. If your project has a long-running backend (websockets, bots, background jobs), use Railway or Render for that part.
Step by step
-
Check your project type
- Static / SPA (Vite, Astro, plain HTML): Build produces a folder of HTML/JS/CSS (dist/, build/, out/).
- Next.js / SSR framework: next.config.* or a server adapter.
- Long-running server (Express, FastAPI, bots, websockets): A start command like node server.js or uvicorn that must keep running.
-
Get the code onto GitHub
- Create a GitHub repo and push (Cursor's Source Control panel or git in the terminal).
-
Create the project on Cloudflare Pages
Dashboard → Workers & Pages → Create → Pages → Connect to Git, choose the repository, pick the framework preset.
-
Check the build settings
React (Vite) preset: build command
npm run build, build directorydist.For Cursor: build command
Whatever package.json says (usually npm run build), output Depends on framework. -
Add environment variables before the first build
In Cloudflare Pages: Workers & Pages → your project → Settings → Environment variables. Copy these from Cursor:
-
Everything in your local .env — never commit it; add each value in the host dashboard.
Changed a value later? Rebuild. Vite bakes variables in at build time. Troubleshoot missing env vars
-
-
Make page refreshes work (Usually nothing to do)
(none) # No config needed: if there is no top-level 404.html, # Cloudflare Pages serves index.html for unknown routes. # If you DO ship a 404.html, add public/_redirects with: /* /index.html 200Server-rendered projects (TanStack Start, Next.js) don't need this. Cloudflare Pages docs (opens in a new tab)
-
Update login redirect URLs
Add your new Cloudflare Pages URL (and later your custom domain) to your auth provider's allowed URLs. Redirect troubleshooting
-
Add your domain
Your project → Custom domains → Set up a custom domain. Easiest if the domain's DNS is on Cloudflare (Cloudflare Registrar sells domains at cost).
What it will cost
Free tier Free: unlimited sites, seats, requests and bandwidth for static assets. Paid from $5/mo: Workers Paid: $5/month minimum per account — 10M requests/month included, then $0.30 per extra million. Static asset requests stay free.. Checked 17 Oct 2026 on Cloudflare Pages's pricing page (opens in a new tab).
- If your project has no top-level 404.html, Pages treats it as a single-page app and serves / for unknown paths automatically.