Skip to content

Device Performance Telemetry

Performance Telemetry helps you understand hardware limitations affecting your players. Identify devices with high crash rates, memory pressure, or FPS issues.

The SDK tracks performance automatically — no setup required. Three lifecycle events feed the dashboard:

EventWhenCaptures
session_startSDK initdevice_model, cpu_cores, gpu_name, total_ram
session_pingEvery 60s during playfps, ram_bytes, scene (live snapshot)
session_endOn window closemin/avg/max_fps, max_ram, duration

session_ping (since SDK v1.6.0) feeds the FPS over Time and Peak RAM over Time charts. They show mid-session telemetry even when session_end doesn’t fire (crashes, mobile backgrounding, browser tab kill).

The Dashboard auto-buckets by date range: 1d → 5min, 7d → 1h, 30d → 6h, 90d → 1d.

MetricSourceDescription
Total Sessionssession_endSessions that closed cleanly
Overall Avg FPSsession_endWeighted by session count
Unique Devicessession_endDistinct device models
Devices with Issuessession_endAvg FPS < 30 or crash rate > 2%
FPS over Time chartsession_pingAvg + P10 (frame-time spikes)
Peak RAM over Time chartsession_pingMax RAM per bucket — spot leaks
Per-Device Tablesession_endAvg/Min/Max FPS, RAM, crash rate

Devices with >10% crash rates are flagged in red. Common patterns:

IssueIndicatorsSolution
Low Memory>90% memory usage before crashReduce texture quality on older devices
GPU Driver BugSpecific model crashes on specific OSForce OpenGL instead of Vulkan
Thermal ThrottlingFPS drops over timeReduce draw calls, add frame rate cap

Per-Device Aggregate (session_end):

Terminal window
curl "https://api.questdata.io/v1/stats/performance?from=2026-01-01&to=2026-04-01" \
-H "x-game-api-key: YOUR_API_KEY"

FPS/RAM Timeseries (session_ping):

Terminal window
curl "https://api.questdata.io/v1/stats/performance/timeseries?from=2026-04-25&to=2026-04-26&bucket=1+hour" \
-H "x-game-api-key: YOUR_API_KEY"

Response:

{
"points": [
{
"bucket": "2026-04-26T12:00:00.000Z",
"avg_fps": 119.8,
"p10_fps": 95.0,
"max_ram_mb": 357.3,
"sample_count": 12
}
]
}

bucket accepts any Postgres interval (5 minutes, 1 hour, 1 day, …). p10_fps is the 10th percentile — useful for spotting frame-time spikes that average FPS hides.