Response tools
After a request completes, Tiger's response panel shows the status, timing, size and body in one opaque, readable surface. The frosted chrome stays decorative while the body area uses a more solid background so text is easy to scan.
The response header bar
A narrow strip at the top of the panel summarises everything you need to triage a response at a glance, without opening a sub-panel or inspecting raw text.
Status pill
The status code and reason phrase appear in a coloured pill. Responses in the
2xx range are rendered with a success colour; everything else - client
errors, server errors, redirects that were followed but produced a final
non-2xx code - is rendered with an error colour. The pill maps
directly to the ok flag computed in src/core/response.ts
(status >= 200 && status < 300).
Timing chip
The total round-trip time is shown in milliseconds next to the status pill. Hover the chip to expand a breakdown card with every phase that was measured:
| Phase | What it measures | When present |
|---|---|---|
| DNS lookup | Name resolution for the hostname | Node send path only (client certificate requests) |
| TCP connect | Time to establish the TCP connection | Node send path only |
| TLS handshake | Time to complete TLS negotiation | Node send path, HTTPS only |
| Waiting (TTFB) | Time from request sent until the first response byte arrives | Always |
| Download | Time to transfer the response body | Always |
| Total | Full elapsed time from send to last byte | Always |
DNS, TCP and TLS phases are populated only when Tiger routes the request through the Node HTTP stack, which happens when client certificates (mTLS) are configured for the collection. On the standard Electron fetch path those phases are not exposed by the browser engine and are omitted from the hover card rather than shown as zero.
Size chip
The body size is shown in human-readable units: bytes up to 1 KB, then KB or MB.
The figure is the byte length of the response body as received after decoding -
computed with TextEncoder to get an accurate UTF-8 byte count rather
than a character count.
Body tab
The Body tab is selected by default. It renders the response body in one of four
modes depending on the Content-Type and user controls.
JSON mode
When Tiger can parse the body as JSON it pretty-prints it with two-space indentation
and applies syntax highlighting via the JsonView component. A
Pretty / Raw toggle in the header bar lets you switch between the
formatted view and the original bytes. Pretty mode is the default.
For very large responses (above approximately 2 MB) Tiger skips JSON parsing and highlighting and shows the raw text instead. A "Large response · raw" chip appears in the header bar to explain why the Pretty toggle is absent. This threshold prevents the UI from stalling on multi-megabyte payloads.
HTML preview
When the Content-Type is text/html, the body tab offers a
Preview / Raw toggle. In Preview mode the HTML is rendered inside a
sandboxed <iframe> with no permissions granted - scripts,
forms, popups and same-origin access are all blocked. This lets you inspect
templated pages and email HTML without executing anything. Switch to Raw to see the
markup as plain text.
Image preview
When the response Content-Type starts with image/, Tiger
displays the image inline in the body area. The transport layer encodes the binary
body as base64 and passes it to the renderer as a data URL; Tiger constructs the
src as data:<content-type>;base64,<bytes>.
A Preview / Raw toggle lets you see the raw base64 string if
needed. Preview is the default.
Plain text and XML
Bodies that are not JSON, HTML or an image type are shown verbatim in a monospace pre-formatted block. Word wrap is off by default; toggle it with the wrap icon button in the header bar.
In-response search
Press Cmd+F (macOS) or Ctrl+F (Windows / Linux) while a response is on screen to open the search bar. You can also click the magnifying-glass icon in the header bar. Tiger runs the search over the text that is currently visible - the pretty-printed JSON in Pretty mode, or the raw bytes in Raw mode.
How the search works:
- All matches are highlighted inline. The active match is scrolled into view automatically.
- Press Enter to move to the next match, Shift+Enter to go back.
- The counter in the search bar shows the current position as
n/total. A trailing+means matches were truncated to keep the UI responsive on very long bodies. - Press Esc or click the close button to dismiss the bar. Highlights disappear immediately.
- The search is case-insensitive plain text - not a regular expression.
Opening Cmd/Ctrl+F while on the Headers or Cookies tab automatically switches to the Body tab so the search bar always applies to the body text.
Headers tab
The Headers tab lists every response header as a name: value pair.
Header names are displayed in their original casing as returned by the server.
The tab label includes the header count, for example Headers (12).
Cookies tab
Any Set-Cookie headers in the response are parsed and shown on the
Cookies tab: the cookie name and value, followed by the raw attribute string
(Path, Expires, HttpOnly, etc.) in a dimmed
colour. The tab label shows the cookie count.
Cookies that arrive in a response are automatically persisted to Tiger's cookie jar and sent on subsequent requests to the same origin, provided the cookie jar is enabled for the collection.
Tests tab
When the request has a post-request script that calls test(), a Tests
tab appears alongside Body, Headers and Cookies. The label shows the pass/fail ratio
- for example Tests (3/4). Each row carries a
PASS or FAIL badge, the test name, and any error message
from a failing assertion.
Script console.log() output appears below the test list in a dimmed
log block. See Scripts and tests for how to write
assertions.
Toolbar actions
The icon buttons on the right side of the header bar are always visible regardless of which tab is active:
- Copy - copies the raw response body text to the clipboard. The icon briefly changes to a checkmark to confirm.
- Save to file - opens a save dialog (or triggers a browser download fallback) to write the raw body to disk. JSON responses are suggested as
response.json; everything else asresponse.txt. - Wrap (body tab only) - toggles word wrap on the body text. Useful for wide JSON or XML that overflows horizontally.
- Search (body tab only) - opens the in-response search bar, same as Cmd/Ctrl+F.
Empty and error states
Before any request is sent the panel shows a neutral placeholder. While a request is in flight a "Sending…" status pill appears. If the request fails at the network level - a DNS failure, a connection refusal, a timeout - the panel shows a "Request failed" pill and the underlying error message in monospace text. HTTP error responses (4xx, 5xx) are not network failures: they are displayed normally with a red status pill.
Large response behaviour
Tiger applies a 2 MB threshold to JSON pretty-printing and syntax highlighting. Above that threshold:
- The body is displayed as raw text, bypassing the JSON parser entirely.
- The Pretty/Raw toggle is hidden.
- A "Large response · raw" chip appears in the header bar with a tooltip explaining the behaviour.
- In-response search still works over the raw text.
- The copy and save actions still capture the full body.
This design keeps Tiger responsive when an API returns a large paginated dump or a diagnostic payload that would otherwise freeze a syntax highlighter.