Axonpack
@axonpack/expo-devtoolsReference

Network tab

Toolbar, filters, settings, throttle profiles, the request row, the detail sheet and the sandbox.

Three capture paths feed one list: fetch, XMLHttpRequest (which is what catches axios and most HTTP client libraries), and any <WebView /> you wired up. The list holds the 200 most recent requests; older ones fall off the end. Request and response bodies are kept in full, never truncated.

Toolbar

ControlWhat it does
Record / ClearAs on the panel.
Sort (↑ / ↓)Flips the direction of whatever Sort by is set to. Its label says what pressing it would give you.
Filter (⌕ list)Opens the filters panel below.
Preserve log (🔖)On by default. Keeps captured rows when a wired-up WebView page navigates; off means the log clears with the page.
Export (⤓)Opens the OS share sheet with the currently filtered list as JSON, named network-log-<timestamp>.json.
Settings (⚙)Opens the settings panel below.

Filters panel

FieldWhat it does
Search boxMatches method, URL, status code and source, not header or body text. Clear it with the ✕ inside the box.
Invert chipShows everything that does not match the search text.
Type chipsAll, Fetch/XHR, JS, Img, Media, Other, classified from the response MIME type.
Status chipsAll plus one per band captured (2xx, 4xx, Failed, Pending). Each one writes the field below.
Status expression404, 4xx, >= 400, 200-299, failed, pending. Unreadable text turns the field red and filters nothing.
Method chipsOne per method actually captured (GET, POST, …), and more than one can be on at once. All clears them.
Source chipsOne per source seen — your app, or WebView::[name] per declared browser view — and again multi-select.
More filters ▸Reveals the rest, below.
Size: at least / at mostBytes, or with a unit: 500, 20kb, 1.5mb.
Duration: at least / at mostMilliseconds, or with a unit: 250, 800ms, 1.5s, 2min.
Only requests in flightKeeps just the ones that have not finished.
Only overridden or blockedKeeps just the ones a rule of yours answered.
Hide data URLsDrops requests whose URL starts with data:.
Hide failed requestsDrops requests that errored (network failures, not 4xx/5xx responses).

Every filter combines with the search. Invert negates all of them together except the two Hide switches, which stay absolute — inverting those would bring back the exact noise they suppress. A filter an entry has no figure for excludes it: a socket has no size or status code, and a request in flight has no duration yet.

Settings panel

SettingDefaultWhat it does
Large request rowsOnOff gives compact rows: no short name, no badges, URL as the primary line.
Sort byTimeTime, Size, Duration, Status, plus the direction the toolbar's arrow also flips.
Group by fetch clientOffGroups rows under a header per source, with a count per group.
Show overviewOffShows the traffic graph above the list.
Stack header valuesOn below 768dpIn the detail sheet, puts each header's value under its name instead of beside it.
ThrottlingNo throttlingNo throttling, Slow 3G, Fast 3G, Fast 4G, Offline, Custom.
User agentDefaultDefault, iPhone Safari, Android Chrome, Chrome (macOS), Chrome (Windows), Googlebot, Custom.

Throttle profiles

Applied to your app's own requests and to wired-up WebView pages.

PresetDownloadLatency
Slow 3G400 kbps2000 ms
Fast 3G1638 kbps563 ms
Fast 4G9000 kbps85 ms
Offlinenonerequests fail immediately
Customyour Download (kbps)your Latency (ms) (defaults 750 / 500)

Picking Custom under User agent reveals a free-text field for the whole UA string. Every captured request records the conditions it ran under, so the detail sheet can show them later.

Overview strip

Shown when Show overview is on, and only once at least one request is captured.

  • 36 buckets spanning the oldest to the newest captured request; bar height is request count.
  • A bucket containing a failed request is drawn in the error colour.
  • Tap a bucket to narrow the list to that slice of time; tap it again to clear.
  • The row underneath shows the first timestamp, the selected span, and the last timestamp.

A request row

ElementMeaning
MethodColour-coded per verb.
StatusThe HTTP code, or the error text, or an amber PENDING while still in flight.
Duration · timeTotal ms and the wall-clock start. A dash until it finishes.
Type iconPer response kind; JSON gets its own glyph.
NameLast path segment plus the query string (large rows only).
URLFull URL, one line on large rows, two on compact.
BadgesResource type · source (only when it came from a WebView) · response size (large rows only).
The copy menu, also on long-press anywhere in the row.

The copy menu: Copy URL, Copy as cURL, Copy as fetch, Copy as fetch (Node.js), plus Copy request payload and Copy response when those exist.

Detail sheet

Tapping a row opens a sheet with up to five tabs. It always opens on Headers.

Headers

SectionFields
GeneralRequest URL, Request Method, Status Code, Source (only for WebView traffic).
Network ConditionsThrottling, User Agent, and Agent String when an override was active. Amber when throttled, red when offline.
Request HeadersEvery header sent, with a per-value copy button. Count in the section header.
Response HeadersEvery header received, same treatment.

The other four

  • Payload — the request body as an explorable JSON tree. The tab is hidden entirely when the request had no body.
  • Preview — the response rendered: pretty-printed and syntax-coloured JSON, a real image for image responses, HTML as HTML. Falls back to No preview available.
  • Response — the raw response body, in full, with a copy button.
  • Timing — Started At and Duration ((pending) while in flight), plus a note that a DNS/TCP/TLS/TTFB breakdown is not observable from JS, since those phases happen in the native networking stack.

The sheet's ⋮ menu adds Try in sandbox above the same copy items as the row menu.

Sandbox

Opens the request as something editable, seeded from what was captured: URL, method, query parameters, headers, cookies, auth and body all split into their own fields.

AreaWhat is in it
URL barThe base URL, without the query string.
Method chipsGET, POST, PUT, PATCH, DELETE.
SendFires the request and switches to the Response tab.
Request tabAuthentication · Query Parameters · Headers · Cookies · Body.
Response tabStatus code and text, colour-coded, with the round trip in ms; Response Headers (with count); Response Body. A failed request shows Request failed and the error instead.

Authentication offers none, bearer (a Token field) and apikey (a header-name field, for example x-api-key, and a Value field). Query parameters, headers and cookies are key/value tables that grow a blank row as you fill the last one. Cookies are recombined into one Cookie header on send.

Sandbox requests go out through the same patched fetch, so they appear in the log like any other request.

On this page