PreviewDrop for Expo

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.

TL;DR
Connect your Expo repo to PreviewDrop, set your env vars in the Variables tab, push a branch. PreviewDrop detects Expo and builds the container for you — no Dockerfile to write. 5 minutes to a live Expo web preview — no EAS Build queue, no CI configuration, no static hosting deploy step.

How PreviewDrop compares for Expo

FeaturePreviewDropEAS Build + VercelManual deploy
Setup time5 min — connect repo1–2 hours — configure eas.json + Vercel projectPer-branch manual steps
CI config neededNoneeas.json + GitHub Actions or EAS webhookn/a — manual
Expo web build Expo web buildExpo web buildExpo web build
HTTPS URLYesYesDepends on hosting
Auto-deploy on pushYesYesNo — manual
PR comment with URLYesIf you wire up GitHub ActionNo
Password protectionYesIf you build authNo
Auto-expiring TTLYesManual cleanupManual
Cost$19/mo flatEAS 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

EAS Build queue for a web preview
Running npx eas build --platform web queues a build on Expo's servers just to produce static files. For a quick preview to share with a designer, the wait feels disproportionate to the task.
The eas.json branching problem
Different branches need different env vars for the web build (API URLs, feature flags). Managing this in eas.json profiles per branch is fragile — a single misconfigured profile breaks previews silently.
Expo web ≠ Next.js
Expo web uses react-native-web, not Next.js. Vercel's Expo support is nonexistent — it doesn't recognise Expo projects and won't auto-detect the build. You have to manually configure the output directory and build command, which breaks when Expo's export format changes.
No one sees the web build until it's merged
Without per-branch previews, the web build only gets reviewed after merge — on staging or production. Bugs in the web layer (responsive breakpoints, navigation, deep links) are found too late.

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

1
Nothing to add
PreviewDrop detects Expo and builds with npx expo export:web — the same command you already run locally. Override the Build or Start command in Project Settings if you need to.
2
Connect your repo
Authorize PreviewDrop on GitHub. Set any env vars your Expo app needs (API_BASE_URL, feature flags) in the Variables tab.
3
Push and share
Every branch gets a live HTTPS URL posted to the PR. Designers, PMs, and QA open the link — no EAS Build wait, no manual deploy.

$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 GitHub

See 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
Framework guidesDjangoRailsLaravel