Use case 1: compare clients
Run native fetch, axios, ky, and ffetch against the exact same chaos profile and workload. This isolates client-level behavior under identical transport conditions.
chaos arena
A browser-based benchmark that runs fetch, axios, ky, and ffetch side-by-side under identical controlled chaos. No install, no server, no account - opens directly in your browser.
Run native fetch, axios, ky, and ffetch against the exact same chaos profile and workload. This isolates client-level behavior under identical transport conditions.
Tune timeout, retries, and plugin configuration in a repeatable environment to see how your strategy shifts tail latency, success rate, and error shape.
Every setting is live - change it and re-run. The entire arena state encodes into the URL so you can share a specific experiment with a link.
The built-in chaos engine (powered by chaos-fetch) intercepts every outbound request before it hits the network. You compose global rules that apply to all clients simultaneously:
retryAfterMs is set the 429 response includes a Retry-After header that smart clients like ffetch and ky will respectRules are executed in order and can be stacked. Start from one of eight presets (zero-config, light, api-instability, meltdown-recovery, rate-limited, slow-network, burst-traffic, brownout) or build your own.
Each of the four clients has its own configuration panel. Cards are draggable so you can reorder them visually.
fetch (native)
No config - the browser baseline. No timeout, no retry, no error handling. Shows what you get with zero effort.
axios
Configurable timeout. No retry built-in - shows where a popular client sits without a retry layer.
ky
Timeout, retry limit, retry methods, retry status codes, Retry-After awareness, backoff base and max. A capable baseline with sensible ergonomics.
ffetch
Everything ky has, plus three opt-in plugins you can toggle per run: dedupe (collapse identical in-flight requests), circuit breaker (stop retrying a broken upstream), and hedge (race a backup request to cut tail latency). Plugin execution order is configurable.
Set the total request count (default 60), concurrency (default 6 simultaneous requests), and target URL. You can point the arena at any CORS-enabled endpoint - use a local dev server or a public API.
After each run a diagnostic engine analyzes each client against the chaos conditions and surfaces two things:
The engine includes guard rules that suppress harmful recommendations - for example it won't suggest adding more retries if your timeout is already too tight, and won't suggest a circuit breaker for rate-limit problems. When a recommendation is suppressed the UI shows the reason.
Every chaos config, client setting, and run parameter is encoded into the URL. Copy the address bar to get a shareable link that reproduces the exact same experiment in anyone's browser.