Skip to content

Real-world conditions

See where the app's traffic goes

Read every DNS lookup, point a name at a staging server, and find far servers and wasted connections in the routes.

Why: a slow screen is often not the app but the network around it: a CDN on another continent, a name that doesn’t exist, a new TLS connection for every request. And to test against staging you shouldn’t need a special build.

  1. The DNS tab lists every name the device looks up, as it happens.
  2. Marks show what stands out: NXDOMAIN for a name that doesn’t exist, far when every address is on another continent than the VPN exit, and DoH blocked for encrypted DNS that would skip the log.
  3. A row’s details show the CNAME chain and each address with its country and network.
  4. Rewrite this name answers it with your own address, blocks it or makes it not exist.
  5. The Routes tab follows the connections from the device through the VPN to each server, with no reuse, far, bypass and HTTP flags.
  6. Flagged leaves only the names that look off.
  • Production app against staging. Rewrite api.example.com to the staging server’s IP address and restart the app. Turn the rule off to go back; with TTL 0 it applies at once.
  • What if analytics is down? Rewrite the analytics domain to Doesn’t exist or Block and check that the app still opens and doesn’t hang on a spinner.
  • Why are images slow in Kazakhstan? Switch the country to Kazakhstan and look for far in Routes: an image CDN without an edge nearby shows up right away.
  • Too many handshakes. no reuse on your API means every request opens a new TCP and TLS connection. Send the connection list from the details to the backend team.
  • Both tabs need a session with a VPN location: its sidecar sees the device’s DNS and connections.
  • Rewrites clear Android’s DNS cache, but a WebView can keep a name for up to a minute. Restart the app when a rewrite must apply to everything.
  • Save a set of rewrites under Sets and load it into another session later.
  • Recordings keep both tabs, so a link to a recording shows the DNS answers and connections at the moment of the bug.
  • There is no DNS or Routes tab: the session has no VPN location. Physical phones have Routes but no DNS tab yet.
  • A rewrite has no effect: the app hard-codes an IP address or resolves names over its own DNS over HTTPS.
  • Countries are missing: this Holtdroid has no geolocation databases configured.

More details: DNS log and rewrites, Routes.