By pre-rendering your pages, you can remove the need for a production server. You can then deploy your app to any static host.

Static hosts always expect one .html file per URL. This means you need to pre-render all your pages, regardless of render mode. For example, if you have SPA pages, then you also need to pre-render them which will generate .html files with an empty <body>.

You can choose between following deploy strategies:

  • Build locally and upload dist/client/ to the static host.
  • Let a GitHub action build and upload dist/client/ to the static host.
  • Let the static host build your app.

The $ vite build command generates dist/client/ containing all static assets.

You can try out your production build locally with $ vite preview, or any other tool such as $ serve dist/client/.

If you don't deploy your app at your domain root https://my-domain.com, but at https://my-domain.com/somewhere/nested instead, then change your app's Base URL.