Instrument API requests with spans and distributed tracing. Use when tracking request latency, correlating client-backend traces, or debugging API issues.
/plugin marketplace add calube/mobile-observability/plugin install mobile-observability@caleb-davis-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Measure API requests and correlate with backend traces.
| 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.
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)
| Metric | Good | Acceptable | Poor |
|---|---|---|---|
| API p50 | <500ms | <1s | >1s |
| API p95 | <2s | <5s | >5s |
| Error rate | <1% | <3% | >3% |
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 | 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 |
See references/mobile-challenges.md (Client-Backend Correlation) for:
See references/performance.md (Network section) for latency budgets.
Use when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.