Most "deploy React app for free" guides quietly assume you'll add a credit card — even on the free plan, "just in case" you exceed limits. For Nigerian devs whose card just got declined for the third time this week, that's a non-starter.
This walkthrough goes from git init to a public https://your-app.launchverse.app URL without ever touching a payment form. It works for Vite, Create React App, and Next.js (which is a superset of React).
The Launchverse free tier doesn't ask for a card. Soft limits get you an email and a one-click upgrade prompt — never a silent overage charge.
Prerequisites
You'll need:
- A GitHub account (free).
- A working React app on your laptop. Any flavour. If you don't have one yet:
npm create vite@latest my-app -- --template react
cd my-app
npm install
That's it.
Step 1 — Push your code to GitHub
If your app isn't on GitHub yet:
git init
git add .
git commit -m "Initial commit"
gh repo create my-app --public --source=. --push
(Or use the GitHub website's "New repository" button and copy-paste the git remote add origin command.)
You don't need to make the repo public. Launchverse can deploy private repos via the GitHub App permission flow.
Step 2 — Sign in to Launchverse
Go to launchverse.app/login and click Continue with GitHub.
You'll be asked to grant the Launchverse GitHub App permission to read the repos you want to deploy. You can pick "All repositories" or restrict it to a single repo — we recommend the latter to start.
No payment details are collected at sign-in.
Step 3 — Create the project
Click New Project, then pick the repo you just pushed. The dashboard auto-detects what kind of app it is:
- Vite: build command
npm run build, outputdist/. - Create React App: build command
npm run build, outputbuild/. - Next.js: detected automatically — runs
next buildand serves the result. - Anything with a Dockerfile: we use the Dockerfile.
If the detection is wrong, override the build command and output directory in the same form.
Click Deploy.
Step 4 — Watch the build
You'll get a live build log. For a brand-new Vite app, the build is usually under 30 seconds:
Cloning repository...
Detected Nixpacks: nodejs-18
Running install command: npm ci
Running build command: npm run build
Build complete: 2.4 MB output
Starting container...
✓ Live at https://my-app.launchverse.app
When the log ends with a green check, your app is live. Click the URL and you should see the React welcome screen.
Step 5 — Add environment variables (optional)
If your React app reads environment variables (e.g. VITE_API_URL or NEXT_PUBLIC_*), add them under Project → Settings → Environment Variables. Vite/CRA require them to be prefixed (VITE_ / REACT_APP_) to be exposed to the browser bundle.
Adding/changing env vars triggers a debounced redeploy — bulk edits get coalesced into one rebuild, not one per variable.
Step 6 — Add a custom domain (optional)
Owning myapp.com.ng? Click Domains → Add Domain, enter the name, and follow the DNS instructions:
- Apex domain (
myapp.com.ng): add an A record to the IP shown. - Subdomain (
app.myapp.com.ng): add a CNAME to<your-app>.launchverse.app.
SSL is provisioned automatically via Let's Encrypt within a couple of minutes and renews itself forever after.
What about the database?
Most React apps don't have a backend in the same repo — they call out to Supabase, Firebase, or a separate API. None of those need a card to start either:
- Supabase free tier is generous and works fine from Lagos.
- If you want a database alongside your app on Launchverse, you can spin up a managed Postgres or Redis from the project dashboard. Free tier has small but real quotas.
Common errors and fixes
"Build failed: command not found: vite" — the build command in the dashboard is wrong. Open Settings, change it to npm run build. Vite is invoked through your package.json script.
"Application failed to respond" — for static React apps (Vite/CRA), make sure the Static Output Directory matches what your build produces (dist/ for Vite, build/ for CRA). If you have a Next.js app, leave the output empty — the platform runs next start.
"GitHub: 403" — the GitHub App doesn't have access to that repo. Click your profile → Manage GitHub App and add the repo to the install scope.
Promote when you're ready
The free tier is genuinely usable for indie projects and student work. When you outgrow it — more than a few projects, or you want managed databases, BYOS, or a custom build runner — the paid plans start in Naira via Paystack. No FX surprise.
Related reading
- The Vercel alternative for Nigeria — if you've outgrown Vercel's pricing.
- Free hosting for Nigerian developers — how Launchverse compares to other free tiers.
- FAQ — refunds, limits, BYOS, frameworks supported.