Catch breaking API changes before your users do
Diffsurge captures production traffic, replays it against your staging builds, and surfaces every breaking change — so you ship with confidence instead of crossing your fingers.
Free forever for schema diffing · No credit card required
Signal Analysis
ENDPOINTS SCANNED
2,847
BREAKING CHANGES
12
CONFIDENCE
99.5%
< 5ms
Proxy latency overhead
1,000+
Requests per second replay
99.9%
Uptime SLA for proxy
5 min
Setup to first diff
Everything you need to ship without fear
From static schema checks in CI to live traffic replay in production — a complete safety net for every API change.
Detect breaking changes at the schema level
Parses OpenAPI 3.x, GraphQL SDL, and gRPC proto files. Compares endpoints, request params, and response shapes — flagging every breaking change with severity.
$ surge schema diff --fail-on-breaking
Comparing 47 endpoints…
✗ BREAKING POST /api/users
└─ Required field removed: "email_verified"
⚠ WARNING GET /api/users/:id
└─ Type: "age" string → number
✓ SAFE 45 endpoints unchanged
Capture production traffic without code changes
A lightweight reverse proxy that samples real request/response pairs. Async buffering keeps latency under 5 ms.
Automatic sensitive data masking
Emails, phones, credit cards, and SSNs are redacted before storage.
Replay 1,000+ requests per second against staging
Fires captured traffic at your new build with configurable concurrency. Semantic comparison ignores field order — only real differences surface.
Real-time visibility into every request
Filter traffic by path, method, and status. Run replays from the UI. Browse drift reports sorted by severity.
Four steps to safer deployments
Go from zero to production-grade API regression testing in minutes.
Install the CLI
One command, zero dependencies. Install the Surge CLI globally via npm or run it directly with Docker. Works on macOS, Linux, and Windows.
$ npm install -g diffsurge
added 1 package in 2.1s
$ surge --help
surge — Catch breaking API changes
before your users do
Commands:
diff Compare two schema files
schema Schema management
replay Replay traffic
version Print versionDiff your API schemas
Surge compares OpenAPI, GraphQL, and gRPC schemas — flagging every breaking change with severity and a JSON path.
$ surge schema diff \
--old api-v1.yaml \
--new api-v2.yaml
Comparing 47 endpoints…
✗ BREAKING POST /api/users
└─ Required field removed: "email_verified"
⚠ WARNING GET /api/users/:id
└─ Type changed: "age" string → number
✓ SAFE 45 endpoints unchanged
1 breaking · 1 warning — exit code 1Capture production traffic
Deploy the proxy as a sidecar or standalone container. It samples real traffic, strips PII, and buffers asynchronously.
$ docker run -d \
-e TVC_STORAGE_POSTGRES_URL=... \
-e TVC_STORAGE_REDIS_URL=... \
-p 8081:8080 \
equixankit/diffsurge-proxy
▸ Proxy listening on :8080
▸ Sampling 10% of traffic
▸ PII redaction: enabled
▸ Buffer: 10,000 slots / 20 workersReplay and compare
Point the replay engine at your staging build. It fires captured requests, compares every response, and produces a drift report.
$ surge replay \
--source traffic.json \
--target http://staging:8080
Replaying 1,247 requests...
✓ 1,241 responses matched (99.5%)
⚠ 4 warnings (type coercion)
✗ 2 breaking (missing fields)
▸ Report saved to drift-report.jsonThe breaking changes that slip through unit tests
Unit tests verify logic. Integration tests verify contracts. Diffsurge replays actual production traffic — catching real-world mismatches before your users do.
Removed fields
A required field is removed from a response body
Type changes
A field type changes — string becomes number
Deleted endpoints
An endpoint is renamed or removed entirely
New required params
A new required query parameter is added
Shape changes
A nested object structure changes its shape
Latency regressions
Response time regresses beyond a threshold
Status code drift
A status code changes for identical requests
PII leaks
PII appears in a field that was previously clean
Runs everywhere
Works with your stack,
not against it
A single binary with zero dependencies. Drop it into your CI/CD pipeline — standard exit codes mean your workflow blocks automatically on breaking changes.
FAQ
Frequently asked questions
Everything you need to know about Diffsurge. Can't find what you're looking for? Reach out.