lobsite! Sign in Sign up

Vite hosting

Host a Vite app or site: npm run build writes dist/, and npx lobsite deploys it with HTTPS. Client-side routing works with spa = true or a dashboard switch.

Builds into dist/ and deploys it. public/ is left alone: Vite copies it into dist/ for you.
Drop an HTML file, a folder or a .zip Checked in your browser; nothing is uploaded until you publish.

Vite builds React, Vue, Svelte, Solid and plain JavaScript projects into a folder of static files, dist/. Lobsite hosts that folder. Run npm run build, then npx lobsite, and the app is live at a *.lobsite.app address with HTTPS. If the app has client-side routing, one setting makes deep links work.

Making a browser game with a Vite template? The Phaser hosting guide covers game assets, canvas sizing and playtest builds alongside this deployment workflow.

How it works

  1. Build with npm run build (that's vite build). The app lands in dist/, with hashed files in dist/assets/.
  2. Run npx lobsite in the project. It deploys dist/, not public/, which Vite has already copied into the build. The first deploy needs no account and lasts 6 hours.
  3. Turn on single-page mode if the app has a router: add spa = true to lobsite.toml, or flip Single-page app in the site's settings. Then keep the site with the claim link, in a free account.

Routing and single-page mode

A Vite app with React Router, Vue Router or TanStack Router has one index.html. Opening /settings directly asks the server for a file that doesn't exist. With single-page mode on, Lobsite answers those paths with your index.html, and the router draws the page:

# lobsite.toml
spa = true

Only page requests get the app. A missing file such as an old /assets/index-3f9a.js gets a real 404, so a visitor who still has the previous version open after a deploy gets a clear error, not HTML in place of a script. The deploy prints a tip when package.json has a router and single-page mode is off. More in the docs.

vite.config and the build

  • base stays at its default, /: the app is served from the top of its address. Set it only for a GitHub Pages project site, then remove it when you move.
  • Environment variables starting with VITE_ are written into the build. They're visible to anyone who opens the app, so keep secrets out of them; .env files themselves are never deployed.
  • Several pages (build.rollupOptions.input with more than one HTML file) are a multi-page site: each page is a file, and single-page mode isn't needed.
  • npm run preview serves dist/ locally, which is the quickest check before a deploy.

Caching hashed files

Vite puts a hash of each file's contents in its name, as in index-3f9a.js, so a file with a given name never changes. Lobsite stores files by content too, so a deploy uploads only the chunks that changed. To let browsers keep those files for a year, add a header rule:

[[headers]]
for = "/assets/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"

index.html is always checked again, so visitors get the new version straight after a deploy.

Single-page apps

spa = true in lobsite.toml, or one switch in the dashboard: deep links open your app, missing files still 404.

Only changed files upload

Files are stored by their hash. Redeploying an unchanged site uploads 0 bytes.

Every deploy gets a URL

Preview before going live. Roll back in one click, redirects and all.

HTTPS everywhere

Every site gets a *.lobsite.app address with HTTPS from the first deploy.

Config in one file

Redirects, headers and forms live in lobsite.toml and travel with each deploy.

No account to try it

A deploy without an account is live for 6 hours. The claim link keeps it, free.

Vite hosts compared

Lobsite Netlify Vercel GitHub Pages
Deep links in a single-page app spa = true, or a switch in the dashboard A _redirects rule A rewrite in vercel.json No: copy index.html to 404.html, served with status 404
Missing script files 404 The app's index.html The app's index.html 404
Builds on the server No: you deploy dist/ Yes Yes In GitHub Actions
Account before the first deploy No: live 6 hours, then keep it free Yes Yes Yes, and a repository
Custom domain Yes, free Yes Yes Yes

Netlify and Vercel build from Git and run server functions. Lobsite is the quickest way to put a built Vite app online from your machine, CI or an AI agent, with single-page routing that's one line or one click.

Frequently asked questions

Why do Vite app pages other than the home page show "Not found"?

The app uses client-side routing, and the server has no file for those paths. Turn on single-page mode: spa = true in lobsite.toml, or Single-page app in the site's settings.

Does Lobsite run my Vite build?

No. Build on your machine or in CI, then deploy dist/. What you checked with npm run preview is exactly what goes live.

Can I use Vite environment variables?

Yes, the VITE_ ones, which are written into the build when you run it. Build again after changing them. Anything secret belongs on a server, not in a Vite app.

Does a Vite multi-page site need single-page mode?

No. Each HTML page is its own file, and about.html opens at /about. Leave single-page mode off, so a mistyped address gets your 404.html.

See also