WebKit limits and data sources
An app on iOS inspects its own web view through public WebKit APIs and a runtime it injects into the page. That is a different vantage point from a desktop browser’s built-in inspector, which sits inside the engine. Some things are simply not exposed to apps. Debrowser’s rule is to say so rather than to fill the gap with a plausible number.
The labels
Every inspected value is stored with its source and a confidence level. The interface renders them like this:
| Label | Shown as | Meaning |
|---|---|---|
| exact | the value | Read directly from WebKit, the request pipeline or the page’s own APIs. |
| filtered | the value, with a count | A complete mechanism that WebKit trims, for example a subset of headers. |
| approximate | ≈ before the value |
A good estimate from a related source, such as a size from Content-Length. |
| inferred | italics, with the label | Derived from other data, such as an initiator matched from resource timing. |
| unavailable | — and a reason |
Not exposed by WebKit, blocked by the page, or not captured for this request. |
Page-reported data, meaning anything that came from script running inside the page rather than from the native side, carries a “reported by page script” note.
What WebKit does not expose
- Outgoing cookie headers. The
Cookierequest header is absent from the request events apps receive.Set-Cookieon responses is visible. - Remote addresses, TLS details and redirect chains for subresources.
- Cross-origin timing. Resource Timing zeroes most phases for cross-origin requests without
Timing-Allow-Origin. - Cross-origin stylesheets cannot be read from script; Debrowser re-fetches them and labels the result.
- A debugger or profiler. There is no public way to attach one to an app’s own web view, so there are no breakpoints or CPU profiles.
- Worker console output and the initial context of some navigating iframes.
- Device pixel ratio, touch and hover emulation. Responsive mode changes the viewport, not the hardware.
- The engine’s accessibility tree. The Accessibility panel derives its view from DOM and CSS.
Where values come from
- Network combines the bundled request-observation runtime (statuses, filtered headers, sizes where reported) with the page’s resource timing. Bodies and timing phases appear only when they were captured.
- Elements and Styles read the live DOM and the CSS object model through the injected runtime, with native frame targeting so cross-origin frames are inspected as themselves.
- Console captures the page’s console methods and uncaught errors, and evaluates input natively in the page world or in the isolated world you choose.
- Storage reads cookies natively and web storage, IndexedDB and caches through the runtime.
Pages that fight back
A strict Content Security Policy, Trusted Types or a sandboxed, script-disabled frame can reduce what the runtime can see or do. The inspector shows those frames as opaque instead of pretending they are empty. A pristine mode reloads the page with nothing injected, so you can check whether the inspector itself changed anything.
