Now in early access: free while we're in beta

Catch UX regressions before you ship

Regress probes your app like a real user after every deploy, logged in and end to end. It diffs the interface semantically, reads the commit that shipped, and it alerts Slack only for the changes nobody meant.

No test code. First baseline in about a minute.

Most deploys change more
than the PR says

This is one real run, unedited: the merge, the probe, the verdicts, and the Slack alert exactly as it landed.

regress.co/runs/90801760

Probe run · swarm · trigger: merge · “Rename swarm creation submit button from 'Save' to 'Save Swarm'”

✏️button renamed "Save" → "Save Swarm"intended

“This is exactly the 'Save' to 'Save Swarm' rename described in the commit.”

➕Added: button "Deep Research"unintended

“A brand-new 'Deep Research' button on the swarm form is not mentioned by the rename-only commit.”

Screenshot captured by the probe
swarm-creation · new-swarm-form · captured headless, logged in
Every finding carries a verdict, a rationale, and evidence.
Only unintended changes reach Slack.
merge a1b2c3d · Rename submit button
probe landing · 1 snapshot
probe swarm-creation · logged in · 3 snapshots
diff swarms-list clean
diff new-swarm-form 2 findings
judge → 1 intended · 1 unintended
slack → #regress · 1 unintended UX change
cron · 5 flows · 15 snapshots · clean
merge a1b2c3d · Rename submit button
probe landing · 1 snapshot
probe swarm-creation · logged in · 3 snapshots
diff swarms-list clean
diff new-swarm-form 2 findings
judge → 1 intended · 1 unintended
slack → #regress · 1 unintended UX change
cron · 5 flows · 15 snapshots · clean

Probe, diff,
judge.

  1. 01

    Map your app

    Give it a URL and a test login. A computer-use agent explores your product screen by screen and turns what it finds into flows.

  2. 02

    Diff what users see

    Accessibility-tree snapshots, compared structurally after every deploy. Animation and churn calibrate themselves out.

  3. 03

    Judge against the commit

    Claude reads the commit and rules on each finding. Intended changes stay quiet in the report; the rest reach Slack.

Scroll to step through a run
Discovery agent · useswarm.co
HomeTestsSwarmsSettings
dashboard-homemapped
dashboard-testsmapped
swarms · new-swarmmapped
settings · billingmapped
agent

Map your app

Give it a URL and a test login. A computer-use agent explores your product screen by screen and turns what it finds into flows.

Semantic diff · swarms-list
heading "Swarms"
link "New Swarm"
button "Export"
+ button "Save Swarm"
paragraph (moved)volatile · ignored
2 findings · 1 ignored

Diff what users see

Accessibility-tree snapshots, compared structurally after every deploy. Animation and churn calibrate themselves out.

Judge · commit a1b2c3d
Rename submit button from 'Save' to 'Save Swarm'
✏️ "Save" → "Save Swarm"intended
➕ button "Deep Research"unintended
Regress #regress · 1 unintended UX change on swarm

Judge against the commit

Claude reads the commit and rules on each finding. Intended changes stay quiet in the report; the rest reach Slack.

One watcher, wired to where you work

github · push to main
a1b2c3d Rename submit button
waiting for deploy, then probing

Triggered by your merges

A GitHub webhook starts a probe after each deploy, carrying the commit context for the judge.

#regress
1 unintended UX change on swarm
view full report

Alerts in Slack

Findings, verdicts, rationale and evidence, in the channel your team already reads.

run 90801760 · swarm-creation
✏️ "Save" → "Save Swarm"
Accept as new baseline
you

A dashboard for the rest

Review every run, edit flows, accept intended changes as the new baseline.

cron · every 6h
5 flows · 15 snapshots · clean

Watching between deploys too

Scheduled probes catch drift from third-party scripts, feature flags and content changes.

Ship without breaking
what users see

Point Regress at your app, add a test login, connect Slack. Your first baseline is captured in about a minute.

Start watching your app