# Network Tracing

> Instrument API requests with spans and distributed tracing. Use when tracking request latency, correlating client-backend traces, or debugging API issues.

- Skill: `majiayu000/network-tracing` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/network-tracing`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/network-tracing/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/network-tracing

---


# Network Tracing

Measure API requests and correlate with backend traces.

## What to Capture (OTel-Compatible Names)

| Attribute | OTel Name | Purpose |
|-----------|-----------|---------|
| Method | `http.request.method` | GET, POST, etc. |
| Status | `http.response.status_code` | Success/failure |
| URL | `url.path` | Endpoint (sanitized) |
| Duration | `http.request.duration` | Request time (ms) |
| Size | `http.response.body.size` | Payload bytes |

Using OTel naming = easier migration when OTel mobile matures.
See `references/otel-mobile.md` for rationale.

## Distributed Tracing

Propagate trace context to backend:

```
Client Request
    │
    ├── traceparent: 00-{trace_id}-{span_id}-01
    ├── X-Request-Id: {uuid}
    └── X-Session-Id: {session}
         │
         ▼
    Backend (correlates logs with trace_id)
```

## Key Thresholds

| Metric | Good | Acceptable | Poor |
|--------|------|------------|------|
| API p50 | <500ms | <1s | >1s |
| API p95 | <2s | <5s | >5s |
| Error rate | <1% | <3% | >3% |

## Integration Options

**Choose based on existing vendor:**

| Vendor | iOS | Android | Approach |
|--------|-----|---------|----------|
| Sentry | Auto URLSession swizzling | OkHttp integration | Automatic |
| Datadog | URLSession delegate | OkHttp interceptor | Semi-auto |
| Embrace | Auto-instrumentation | Auto-instrumentation | Automatic |
| Custom | Manual interceptor | Manual interceptor | Manual |

**Automatic (swizzling):** Less code, may miss custom clients
**Manual (interceptors):** More control, works with any HTTP client

## Platform Integration Points

| Platform | Manual Option | Works With |
|----------|---------------|------------|
| iOS | URLSession delegate | All URLSession-based clients |
| iOS | Alamofire EventMonitor | Alamofire |
| Android | OkHttp Interceptor | OkHttp, Retrofit |
| Android | Ktor HttpClientPlugin | Ktor |
| RN | fetch wrapper | Native fetch |
| RN | axios interceptor | axios |

## Implementation

See `references/mobile-challenges.md` (Client-Backend Correlation) for:
- W3C trace header format
- Platform-specific interceptor code
- Backend log correlation patterns

See `references/performance.md` (Network section) for latency budgets.

