6 min read

Deploying Web Apps with CI/CD on Vercel & Render

Deploying Web Apps with CI/CD

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.