# X_CLIENT_TRANSPORT_FAILED

## Means

a browser request got no answer from the app

## Typical cause

`clientTransport` got no usable answer. Three ways: the network refused or dropped the request (`fetch` rejected with a `TypeError`); a non-2xx body named no framework code, so a proxy or gateway answered instead of the app; or a 2xx body was not JSON. `meta.failure` says which: `'network'` (no response at all), `'status'` (a non-2xx no framework code explained) or `'body'` (a 2xx that was not JSON; the write may have landed). That is `TransportFailure` in `@ultimat3/core`. A read, and a write carrying an `idempotencyKey`, are classified `retryable`. A write with no key is not, because it may already have landed. A non-2xx is `retryable` only when its status is

## Fix

`x doctor --json` checks the network and the gateway in front of the app, then retry. Give a write an `idempotencyKey` before you retry it

[Core and runtime](/error-codes#core-and-runtime)
