We built PreviewDrop because every Rails team we knew was still copy-pasting localhost URLs
There's a moment every backend developer knows. The designer Slacks you: "Can you send me the link to that branch?" You type back: "It's on localhost:3000 — let me set up ngrok real quick." Twenty minutes later you've installed ngrok, shared a link, warned them it only works while your laptop is open, and explained why the database seeding looks weird.
This is the state of branch previews for backend teams in 2026. And it's embarrassing.
Vercel trained everyone to expect something that doesn't exist for backend teams
If you've shipped a Next.js or Gatsby project in the last four years, you've used Vercel's preview deployments. Push a branch. Get a URL. Open a PR. Get a bot comment with that same URL. Your designer clicks it. Done.
Vercel and Netlify made this so normal that a whole generation of product teams now expects it everywhere. When a PM asks for a preview URL on every branch, they're not asking for something exotic — they've had it on their last three projects.
The problem is those projects ran on Vercel. Your new project is a Django monolith with Celery workers, or a Rails API with Sidekiq, or a Laravel app with Horizon. And those platforms explicitly don't support what you need.
Vercel's documentation says it clearly: serverless functions only. No long-running processes. No real databases. No Redis. No workers. If your app needs any of those things — and every serious backend does — you're not Vercel's customer. You never were.
So the backend team ends up with a shared develop environment where everyone merges to test, a shared staging server where two engineers are always stepping on each other, and a designer who stopped asking for branch previews because the answer is always some version of "it's complicated."
The alternatives are worse than they look
When backend teams go looking for solutions, they find three categories of answer, and all of them are wrong in different ways.
Railway and Render both support per-PR preview environments. Both work with Django, Rails, Laravel. Both look exactly like what you need. Then you check the bill.
A team with 10 active PRs — completely normal for a 6-person startup — can easily spend $300–$500/mo on Railway if each preview spins up a web process, a worker, and a database. Railway's pricing is per-resource, per-second. Nobody can predict what that number will be next month. We've talked to teams who turned off preview environments specifically because the bill tripled in a sprint.
Shipyard is purpose-built for what you need. It's good. It starts at $500/month. For a 5-person startup that number is a non-starter — you'd need to justify a $6,000/year line item before you've proven the workflow even saves time.
Kubernetes-based tools (Uffizzi, Okteto, Porter) require you to already have a Kubernetes cluster, a team who knows how to operate it, and Helm charts. If you're a 4-person Rails shop, you don't have any of those things. These tools are solving a different problem for a different customer.
Roll-your-own is what most teams actually do. A script that spins up a Docker Compose environment on a shared server. It works until it doesn't — until two PRs clobber the same port, until the cleanup cron hasn't run and you're out of disk space, until someone asks why the preview URL stopped working and you spend 45 minutes debugging bash.
The gap was obvious once we named it
Every tool either costs too much, requires infrastructure you don't have, or isn't designed for Docker-based backends at all. There's no managed, opinionated preview environment tool priced for a team of 3–15 engineers shipping a real backend stack.
We built PreviewDrop to close that gap.
The pitch is simple: if your app has a Dockerfile, push a branch and get a live URL. Open a PR and the same URL lands as a bot comment with a commit status check. Previews expire automatically. They're password-protected so you can send them to clients without worrying about search indexing. And the price is flat — $19/month per workspace, not per seat, not per preview, not per container.
There's no YAML to write. No CI pipeline to edit. No Kubernetes cluster to provision. You install the GitHub App, connect a repo, and push a branch. That's it.
What "works with any Dockerfile" actually means
We mean it literally. We've verified previews for:
- Django 4.2 + Postgres + Celery (including async task workers inside the preview)
- Rails 7.1 + Postgres + Sidekiq
- Laravel 11 + MySQL + Horizon
- FastAPI + Postgres + background schedulers
- Go API servers
- Spring Boot on Java 21
- Rust Actix web services
If the container starts and binds to $PORT, we pick it up. Migrations run as part of the build step. Env vars are set per-project and per-preview. Build logs stream over WebSocket in real time — if the build fails, you see exactly why without hunting through a CI dashboard.
The workflow that replaces "let me set up ngrok"
Here's what the workflow looks like when it works:
- Engineer pushes a branch:
git push origin feature/billing-refactor - PreviewDrop starts a build. The engineer can watch logs stream live in the dashboard.
- 60 seconds later: the branch has a URL.
https://billing-refactor.pr.previewdrop.dev. - Engineer opens a PR.
- PreviewDrop bot posts the URL as a PR comment. GitHub commit status updates to
Preview ready. - Designer clicks the link. They're looking at real running code, real data (from the dev database), real behavior.
- Engineer merges the PR. Preview expires and the container shuts down automatically.
No Slack messages with localhost URLs. No "is ngrok still running?" No "who broke staging?" Each PR gets its own isolated environment that lives exactly as long as the PR does.
What we're building now
We're launching today on the free tier — 2 concurrent previews, no credit card needed. The Starter plan is $19/month per workspace and covers 5 concurrent previews and 3 seats.
If you're on a backend team that's been shipping to a shared staging environment and wishing you had Vercel's preview deployments — this is what we built. We'd love for you to try it.
The GitHub App takes 60 seconds to install. The first preview takes less than 5 minutes. If you hit a snag — with Django migrations, Rails asset pipeline, Laravel queue config, any of it — there's a quickstart in the docs and we're genuinely fast to respond at hello@previewdrop.dev.
Push a branch. Get a URL. Start free →
Ready to give every branch a live URL?
Free tier — 2 concurrent previews, no credit card required.
Start free with GitHub