Hosted Visual CI,
built for small teams.

Catch visual regressions on every pull request — centralized baselines, rendering off your CI runner, and a review dashboard. Priced for small teams, from $9.99/mo.

Visual CI from $9.99/moBaselines that don't expire
Centralized baseline storeBaselines live in shared Snap storage and persist there — not scattered across per-repo CI artifacts that expire in ~90 days.
Off your CI runnerLambda rendering — no Playwright install, no CI-minute burn.
Review dashboardApprove diffs, publish baselines, and triage runs in one place.

How Visual CI works

Open a PR

Your workflow triggers on pull_request — no extra setup on your end.

Snap captures each configured route

Lambda rendering captures your preview deploy — no Playwright in your CI runner.

Diffs against your baseline

Pixel diff against the centralized baseline stored in Snap — no expiring CI artifacts.

Posts the result on the PR

Results post back to the PR comment; approve or reject in the review dashboard.

Visual regression in your CI

Add visual regression to your PRs with snapdrift — free and open source. Or connect Snap's hosted provider for hosted baselines, Lambda rendering, and a review dashboard.

json
// .github/snapdrift.json
{
  "baselineArtifactName": "my-app-snapdrift-baseline",
  "baseUrl": "http://127.0.0.1:3000",
  "routes": [
    { "id": "home-desktop", "path": "/", "viewport": "desktop" },
    { "id": "home-mobile",  "path": "/", "viewport": "mobile"  }
  ],
  "diff": { "threshold": 0.01, "mode": "report-only" }
}
yaml
# .github/workflows/visual.yml
- name: SnapDrift Report
  uses: ranacseruet/snapdrift/actions/pr-diff@v0.7.0
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}
    repo-config-path: .github/snapdrift.json

Visual regression off the critical path.

Start free with the screenshot API, then move to hosted baselines and a review dashboard when your team needs them.