Logopicto

Network Requests

Opt-in capture of HTTP request method, URL, status, and duration.

Picto doesn't capture network requests by default — wrap an http.Client you already use in PictoHttpClient to turn it on:

import 'package:http/http.dart' as http;
import 'package:picto/network_capture.dart';

final client = PictoHttpClient(http.Client());

Use client exactly as you would the one it wraps — get/post/send/etc. all behave identically. Only what gets recorded changes.

What gets recorded#

Method, URL, HTTP status code, and how long the request took — nothing else. A request that fails at the transport level (no connection, DNS failure, timeout) still records, with a null status code instead of a fabricated one.

What never gets recorded#

Headers and request/response bodies are never captured — not "not yet implemented," a firm design decision. Either can carry an Authorization header, a session cookie, or arbitrary user data this recorder has no reliable way to redact. See What We Capture for the same policy applied to on-screen content.

Query parameters are stripped from the recorded URL by default too, since they commonly carry tokens or PII (?token=..., ?email=...) — there's no reliable way to tell those apart from a harmless ?page=2 by shape alone, so the default treats all of them the same way. The real request is unaffected; only the recorded copy loses the query string.

// Keep query parameters in the recording (opt in explicitly):
final client = PictoHttpClient(http.Client(), redactQueryParameters: false);

Watching it in replay#

Recorded requests show up on the event timeline like any other tagged moment — see Tags for how the underlying mechanism works. There's no dedicated dashboard tab for this yet; it's visible per-session in the replay viewer only.