Value viewer
Sooner or later every panel runs into the same problem: the value is too big to show in a row. Rather than truncating it or handing you a wall of text, AppInspect opens one shared full-screen viewer — the same one, with the same gestures, wherever the value came from.
Where it opens from
- A request or response body in Network.
- A SharedPreferences entry, a DataStore entry, or a database cell in Storage.
- An input, output or progress payload in WorkManager.
Anything above roughly 8,000 characters shows a bounded preview with an Open value button. Nothing stored is ever truncated — the preview is a display limit, not a data limit.
The JSON tree
The default view parses the value as JSON and renders it as a tree you can navigate rather than scroll through.
- Collapse and expand per object and array, with dim line numbers in a left gutter so you can talk about "line 340" with someone else.
- A child count on every container row —
{…} 12,[…] 23— so you can see how many items an array holds without expanding it, or collapsing it to count. - Headings shrink to fit instead of truncating, which means a long preference key stays readable in full.
Escaped JSON inside a string
Backends do this constantly: a perfectly good JSON payload arrives as a string field inside another JSON document, escaped into unreadability.
{ "status": "OK", "responseStr": "{\"requests\":[{\"id\":8812,\"state\":\"PENDING\"}]}" }
The viewer detects that case and marks the field with a json chip. Tap
the chip and the embedded payload opens as a real subtree, with the same collapse,
search and copy behaviour as the rest of the document. No copying into an online
formatter.
Raw view
Switch to raw for the unformatted value, with free text selection. This is the view you want when the payload is not JSON at all, or when it is malformed and you need to see exactly where.
Search that keeps up
Content search across the whole value, and it stays responsive on payloads of several hundred kilobytes: matching runs off the main thread and rows are laid out lazily, so typing never waits on the payload. A viewer that freezes for two seconds per keystroke is a viewer nobody uses.
Copying out
| Gesture | Result |
|---|---|
| Tap a container row | Expands or collapses it. |
| Tap a leaf row | Copies that value. |
| Long-press a row | Copies the whole subtree as pretty-printed JSON. |
| The copy menu | Copies the entire value, raw or pretty-printed. |
Copying one subtree is the feature that gets used most: it is how you get the single object that matters out of a 400 KB response and into a ticket, without the rest of the payload coming along.