Deploying Sites
Prepare Your Files
NetLaunch deploys static files from a ZIP archive. Your ZIP must contain an index.html file (at the root or in a subdirectory).
Build your project first
# React / Vite
npm run build # output: dist/
# Next.js (static)
next build && next export # output: out/
# Flutter Web
flutter build web # output: build/web/
# Hugo
hugo # output: public/
# Plain HTML
# No build step needed — just ZIP your files
Create a ZIP
# Zip the build output
cd dist
zip -r ../my-site.zip .
Important: ZIP the contents of your build folder, not the folder itself.
index.htmlshould be at the root of the ZIP (or NetLaunch will find it in subdirectories).
Deploy via CLI
netlaunch deploy --site my-app --file ./my-site.zip
Output:
NetLaunch Deploy
────────────────────────────────────────
Site: my-app.web.app
File: my-site.zip (0.45 MB)
────────────────────────────────────────
Uploading and deploying...
✔ Deployed successfully!
URL: https://my-app.web.app/
ID: abc123def456
Deploy via Dashboard
- Click the Deploy button (or the + FAB)
- Choose ZIP Archive method
- Enter a site name (this becomes your subdomain)
- Enter or generate a deployment key
- Select your ZIP file
- Click Deploy Now
- Watch the progress bar — your site is live in seconds
Site Names
Your site name becomes your URL: https://<site-name>.web.app
Rules
| Rule | Example |
|---|---|
| 3-30 characters | my-app ✓ — ab ✗ |
| Start with a letter | app-1 ✓ — 1-app ✗ |
| Lowercase letters, numbers, hyphens | my-app-v2 ✓ — My_App ✗ |
| No trailing hyphen | my-app ✓ — my-app- ✗ |
Examples
netlaunch deploy -s portfolio -f ./dist.zip
# → https://portfolio.web.app
netlaunch deploy -s my-startup-landing -f ./build.zip
# → https://my-startup-landing.web.app
netlaunch deploy -s docs-v2 -f ./site.zip
# → https://docs-v2.web.app
Redeploying (Updating a Site)
CLI
Deploy with the same site name — it creates a new version on the existing site:
# First deploy
netlaunch deploy -s my-app -f ./v1.zip
# Update with new files
netlaunch deploy -s my-app -f ./v2.zip
The URL stays the same. The new version goes live instantly.
Dashboard
- Open the site from your dashboard
- Click Redeploy
- Pick the new ZIP file
- Upload completes → site updated
SPA (Single Page App) Support
All deployments are configured with SPA rewrites automatically. Any route that doesn't match a static file will serve index.html. This means client-side routing (React Router, Vue Router, etc.) works out of the box.