Pass App Review every time.
Anvil is the testing engine that writes its own tests. It crawls your app, generates the specs worth running, breaks them against a 424-case adversarial matrix on real devices, and triages every failure — so you stay out of App Store rejection hell and ship without the eventualities you didn't think of.
App Store rejection suite · v1.0
Every Apple rejection we've ever seen is already a test.
When an app gets rejected, the fix is easy. Not repeating it is the hard part. Anvil turns every Apple guideline and every past rejection into a permanent regression spec that runs before your next TestFlight upload — on a real device, in your CI, end-to-end.
- 2.1 — Performance (crashes, unresponsive UI, placeholder content)
- 2.3 — Accurate metadata, screenshots, description match
- 2.5 — Software requirements (entitlements, APIs, background tasks)
- 3.1 — Business (purchases routed through IAP, no external links)
- 4.0 — Design (home-screen parity, spam, rating prompts)
- 5.1 — Privacy (tracking, data collection, permission prompts)
A recent rejection → a permanent spec
name: "Guideline 4.3 — duplicate content"
app: com.yourco.yourapp
device: any-ios
steps:
- launchApp
- tapByLabel: "Continue"
- waitForElement: "Home"
- assert:
screens.unique: ">= 5"
dupes.photographic: "== 0"
expected_exit_code: 0Runs under anvil run --suite rejections before every TestFlight upload.
90-second walkthrough
See a full run, start to finish.
Authenticate, pick a device, run the 826-test compliance suite, then the 56-test App Store rejection regression — all from the CLI, on real hardware.
It writes the tests. Then it breaks the app.
Anvil drives your app, proposes the journeys worth testing, and auto-writes replayable specs — then grinds them against a 424-case adversarial matrix spanning 14 failure-mode axes, on real devices, and triages every failure for you. The full App Store + Google Play rulebook is baked in too.
Generative AI crawl
Anvil drives the app itself, reads each screen's accessibility tree, and proposes the journeys + edge-cases worth testing — then auto-writes replayable specs for everything it discovers.
424-case adversarial matrix
14 failure-mode axes — auth & entitlement, security, concurrency, data integrity, permissions, network, locale, a11y, device, interrupts — expanded to a 424-cell pairwise matrix. The eventualities are covered, not guessed.
Crawl → run → triage
One command: generate the specs, run them on real devices, then let the AI classify every failure — real bug, flake, expected, or environment — with a suggested fix. Red only on real bugs.
On-device, not a cloud farm
The KID driver runs on real iOS/Android/visionOS/macOS hardware orchestrated by KFleet — auto-acquire, auto-release. Local-first; no per-minute farm bill.
App Store rejection suite
Every Apple + Google guideline plus every past rejection you've fixed — preserved as regression specs that run before each TestFlight upload.
Replays, traces, live log tail
Step-by-step playback, golden-snapshot diffs, perfetto traces, and sub-second WebSocket-streamed logs + AX events — all linked by run id.
Pricing that scales with your fleet.
Pay for the runs you actually ship. Cancel anytime.
Starter
Up to 100 runs/mo
Team
Up to 10k runs/mo, AI agent included
Enterprise
Dedicated devices, SSO, audit log