Deploying Web Apps with CI/CD on Vercel & Render
Manual deploys are where bugs and downtime sneak in. A good CI/CD setup turns "deploying" into a non-event: you push to main, and a few minutes later the new version is live — tested, built, and rolled out without you touching a server.
The Split: Frontend on Vercel, Backend on Render
For most of my apps, the React frontend lives on Vercel and the API lives on Render. Both connect straight to your GitHub repo and redeploy on every push to the branch you choose. The frontend gets a global CDN; the backend gets a long-running service with a real database connection.
Continuous Integration First
Before anything deploys, CI should run. A simple GitHub Actions workflow that installs dependencies, runs your linter, and runs tests catches broken code before it ever reaches production. If CI fails, the deploy never happens — that's the whole point.
- Push to main → CI runs lint + tests
- CI green → Vercel & Render auto-deploy
- Preview deploys on every pull request
Environment Variables & Secrets
Never commit secrets. Both platforms have a dashboard for environment variables — API keys, database URLs, tokens. Keep production and preview environments separate so a test never touches live data.
Preview Deploys Are Underrated
Every pull request gets its own live URL. You — and your client — can click through the actual change before it merges. It's the single biggest quality upgrade for very little setup.
Wrapping Up
Set this up once and shipping becomes boring — in the best way. Push, watch it go green, done. Want help wiring up your pipeline? Get in touch.