Expo web previews on every PR. No CI config.
Push a branch, get a live HTTPS URL with your Expo web build running. No EAS Build waits, no CI workflow files, no manual deploy to Vercel or Netlify. PreviewDrop auto-detects Expo, builds npx expo export:web, and serves the result behind a TLS-terminated subdomain — all from your existing repo.
How PreviewDrop compares for Expo
| Feature | PreviewDrop | EAS Build + Vercel | Manual deploy |
|---|---|---|---|
| Setup time | 5 min — connect repo | 1–2 hours — configure eas.json + Vercel project | Per-branch manual steps |
| CI config needed | None | eas.json + GitHub Actions or EAS webhook | n/a — manual |
| Expo web build | Expo web build | Expo web build | Expo web build |
| HTTPS URL | Yes | Yes | Depends on hosting |
| Auto-deploy on push | Yes | Yes | No — manual |
| PR comment with URL | Yes | If you wire up GitHub Action | No |
| Password protection | Yes | If you build auth | No |
| Auto-expiring TTL | Yes | Manual cleanup | Manual |
| Cost | $19/mo flat | EAS free tier + Vercel Hobby (limits apply) | Your time |
When to pick each
PreviewDrop — You want Expo web previews on every PR with zero CI config and a flat $19/mo price. You don't want to maintain eas.json web profiles, GitHub Actions workflows, and Vercel project configs just to see what a branch looks like in browser.
EAS Build + Vercel — You're already deep in the Expo ecosystem, using EAS for native builds, and want a single platform for everything. The added configuration cost is worth the unified tooling for your team.
Manual deploy — You deploy Expo web once per release cycle, not per branch. The overhead of per-PR previews doesn't justify any tool investment.
What Expo devs deal with today
What the build needs to do
You don't write this. PreviewDrop detects Expo from your repo and builds the container for you — a Dockerfile in your repo is not used. The reference below shows the steps a working Expo web image needs: install dependencies, run npx expo export:web, and serve the resulting static files. If detection gets one wrong, set the matching Install, Build or Start command in Project Settings. Your app must listen on $PORT.
Reference (not read by PreviewDrop)FROM node:20-slim WORKDIR /app COPY package.json package-lock.json* yarn.lock* pnpm-lock.yaml* ./ RUN if [ -f yarn.lock ]; then yarn install --frozen-lockfile; \ elif [ -f pnpm-lock.yaml ]; then npm install -g pnpm && pnpm install --frozen-lockfile; \ else npm ci; fi COPY . . RUN npx expo export:web EXPOSE 3000 CMD ["sh", "-c", "npx serve dist -l ${PORT:-3000}"]
How it works
$19/mo flat. Unlimited Expo web previews.
No per-build charges, no EAS queue, no CI minutes counting down. Preview the web layer of every branch without thinking about cost.
Start free with GitHubSee your Expo web build before it merges
Connect a repo, push a branch, get a URL. No credit card, no EAS Build, no CI config.
Start free