Deploy a Windsurf app to Cloudflare Pages

Cheapest for static output.

Need an always-on server?

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

  1. Check your project type

    • Static / SPA: Build outputs dist/ or build/.
    • Next.js / SSR: next.config.* etc.
  2. Get the code onto GitHub

    • Push to GitHub like any local project; App Deploys config lives in windsurf_deployment.yaml.
  3. Create the project on Cloudflare Pages

    Dashboard → Workers & Pages → Create → Pages → Connect to Git, choose the repository, pick the framework preset.

  4. Check the build settings

    React (Vite) preset: build command npm run build, build directory dist.

    For Windsurf: build command npm run build, output Framework default.

  5. Add environment variables before the first build

    In Cloudflare Pages: Workers & Pages → your project → Settings → Environment variables. Copy these from Windsurf:

    • Your local .env — add values in Netlify after claiming the site.

    Changed a value later? Rebuild. Vite bakes variables in at build time. Troubleshoot missing env vars

  6. 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  200

    Server-rendered projects (TanStack Start, Next.js) don't need this. Cloudflare Pages docs (opens in a new tab)

  7. Update login redirect URLs

    Add your new Cloudflare Pages URL (and later your custom domain) to your auth provider's allowed URLs. Redirect troubleshooting

  8. 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.

Other options for Windsurf