Free during beta · No credit card required
Stop shipping
broken APIs
BreakShield CI watches every pull request and catches breaking changes in TypeScript interfaces and OpenAPI specs — with AST-verified proof of exactly who gets affected.
< 5sAnalysis time
95%AST confidence
0Config files needed
Pull Request #42 — refactor: clean up UserResponse APImain ← feature/cleanup
✕Details
BreakShield CI
1 breaking change · HIGH risk · merge blocked
Works with any GitHub repository
TypeScriptOpenAPINext.jsNestJSExpressFastify
How it works
Zero setup. Works on every PR.
Install once. BreakShield CI runs automatically on every pull request — no YAML, no CLI, no config.
01
30 seconds
Install the GitHub App
One click. BreakShield CI gets read access to your pull requests and repository contents. Nothing else.
02
Automatic
Open a pull request
Push your branch and open a PR as usual. BreakShield CI starts analyzing in the background immediately.
03
< 5 seconds
Get instant results
A detailed report appears in your PR with breaking changes, affected files, exact line numbers, and a risk level.
Features
Built for teams that care about API contracts
🔬
AST-verified evidence
Every finding is backed by real code. We parse your TypeScript with ts-morph and show you the exact line that breaks — not a guess, not a regex match. If there's no evidence, there's no warning.
📋
TypeScript + OpenAPI
Interfaces, type aliases, functions, REST endpoints, request bodies, response schemas.
🎯
Confidence scoring
Each finding is scored 0–100. Noise is filtered automatically.
🛡️
Merge protection
HIGH and CRITICAL risk PRs get a failing check run that blocks merge.
⚡
Results in seconds
Analysis runs in the background. No waiting, no timeouts.
📊
Risk levels
SAFE · LOW · MEDIUM · HIGH · CRITICAL — based on blast radius.
Detection
Every breaking change that matters
⚠ Breaking — blocks merge
Removed fieldUserResponse.email deleted
Changed typeid: string → id: number
Removed endpointDELETE /users/{id} gone
Optional → requiredname?: string → name: string
Removed parametergetUser(id, opts) → getUser(id)
Added required fieldNew required email in request body
✓ Safe — passes
Added optional fieldNew bio?: string added
New endpoint addedPOST /users/search added
Widened typestring → string | null
Pricing
Free during beta
No limits, no credit card. Help us improve by using it and sharing feedback.
Beta
$0/mo
Free forever during beta
- ✓Unlimited repositories
- ✓Unlimited pull requests
- ✓TypeScript + OpenAPI analysis
- ✓AST-verified consumer evidence
- ✓PR comments + Check Runs
- ✓Risk scoring & merge protection
- ✓Priority support
“We merged a PR that removed a field used in 6 places. Took 3 hours to debug in production. BreakShield CI would have caught it in seconds.”
— Every backend developer, at least once
Your next breaking change
is already in a PR
Install BreakShield CI in 30 seconds. Free during beta.
Install on GitHub — it's free
UserResponse.emailemailremoved fromUserResponse. 2 consumer files affected.return `${user.name} <${user.email}>`const { email, name } = user