Troubleshooting
| Symptom | Check |
|---|---|
| No sessions appear | Project key correct? Origin in the project’s allowed origins? Look for 401/403 on /v1/ingest in the network tab. With debug: true, Backstory.getDebugState().acked should increase. |
| Replay is blank or unstyled | Cross-origin stylesheets cannot be read by the browser; the Player fetches them by URL. Ensure they are publicly reachable or upload assets per release. |
| Inputs show dots | Working as intended. Inputs are masked while privacy mode is on. Use data-backstory-unmask deliberately. |
| Level shows CONSTRAINED or DEGRADED | Slow network, memory pressure, or the recorder itself slowing the page. The SDK thins pointer and canvas data first; DOM fidelity is preserved. Open Session → Capture health for when it dropped, why, and what it cost; gaps, if any, are marked in the Player. |
| Debug panel says “Recovering after pressure” | Expected. Levels downgrade immediately but upgrade one step at a time, and only after the current level’s hold window (20 s at CONSTRAINED, 30 s at DEGRADED, 60 s at SURVIVAL) of healthy metrics. It prevents flapping; the numbers above it will already read healthy. |
| Session split into several rows | Segments roll over every 4 hours (configurable) and stitch into one visit; open the visit to see them together. |
| Self-hosted pods OOMKilled | Datastores sharing a node with application pods without limits. See the sizing table; bundled profile needs 16 GB minimum. |
helm template fails with “requires a 16 GB node minimum” | Read values-bundled.yaml, then pass --set bundled.acknowledgeSizing=true. |