Deploy a React SPA

Deploy a React SPA as a seenode static site. Build to a folder, publish it, SPA routing on by default.

Last updated September 18, 2026

New to seenode? Start free: 7-day trial, no credit card. Static sites are $0.

This guide deploys an existing React SPA (Vite or Create React App) as a static site. seenode runs your build and serves the files. You do not need Express or a start command.

Note (Need a Node server?)

If the app is an API, SSR, or must run Node at request time, create a web service instead and follow Express or Next.js.

Prerequisites

  • A seenode account
  • Git configured on your machine
  • A React SPA that builds to a folder (dist for Vite, build for CRA)

Deploy on seenode

  1. Push to Git

    Commit the project and push it to GitHub or GitLab.

  2. Create a Static site

    From the dashboard, create a Static site and connect the repository. Do not create a Web Service for a client-only SPA.

  3. Build settings

    • Language: Node (detected, or pick a version under Languages)
    • Build command: npm install && npm run build
    • Publish directory: dist (Vite) or build (CRA)
    • Client-side routing (SPA): leave on so deep links serve index.html

    Vite env vars that should be inlined at build time (for example VITE_* ) go in Envs. They are not available in the browser unless the build baked them in.

  4. Create

    Create the site and watch Logs until the build finishes. The app is on the *.seenode.app URL.

Troubleshooting

  • 404 on client routes: confirm Client-side routing (SPA) is on, or add a rewrite /*/index.html on the Routing tab. Existing files still win.
  • Empty or wrong site: publish directory must be the folder that contains index.html after npm run build.
  • Missing env at runtime: static sites have no server. Public values must be prefixed and present at build (VITE_, REACT_APP_). Secrets do not belong in a SPA bundle.

Starting from scratch?

Follow the official React and Vite docs, push the repo, then use the steps above. An older Express-on-web-service template still exists at example-react-with-express if you explicitly want a Node static server.

Next steps