Stream Probe introduces background playback error tracking and a new Error Timeline UI component in this update. Every error event is automatically captured, categorized, and rendered in a dedicated timeline inside the debug overlay.
TL;DR
Stream Probe now tracks video playback errors silently in the background via PlayerInterceptor and SessionStore, then surfaces them in a new ErrorTimeline overlay component. Errors are structured using ErrorCategory and PlaybackErrorEvent models so you can filter, scan, and debug faster.
What's New
- Background error tracking:
PlayerInterceptorcaptures playback errors automatically during a session, no manual instrumentation needed - SessionStore integration:
PlaybackErrorEventobjects are stored per session for the full error history - ErrorTimeline UI component: A new overlay panel that renders the error timeline with events grouped by
ErrorCategory - ErrorCategory model: Structured categorization for error types (network, decode, playback, etc.) with color-coded visual indicators
- PlaybackErrorEvent model: Structured data model holding timestamp, category, error code, and description for each event
- Sample app updates: Settings and player screens updated to demonstrate error tracking in action
- Unit tests: Comprehensive test coverage added for error tracking logic and overlay rendering behavior
How to Use
Error tracking is enabled automatically once Stream Probe is integrated. The ErrorTimeline panel will appear in the debug overlay whenever playback errors occur during a session.
If you want to inspect events programmatically:
// Access recorded error events from the current session
let errors = SessionStore.shared.currentSession?.playbackErrors ?? []
for event in errors {
print("\(event.timestamp) [\(event.category)] \(event.description)")
}
No additional configuration is required to start capturing errors.
FAQ
[
{
"question": "Do I need to manually report errors to the timeline?",
"answer": "No. PlayerInterceptor hooks into the player lifecycle and captures errors automatically in the background. You do not need to add any manual error reporting calls."
},
{
"question": "What does ErrorCategory cover?",
"answer": "ErrorCategory structures errors into types like network failures, decode errors, and general playback errors. Each category has a distinct visual indicator in the overlay timeline."
},
{
"question": "Is the error history kept across multiple playback sessions?",
"answer": "Error events are scoped to the current session via SessionStore. Each new playback session starts with a fresh error timeline."
},
{
"question": "Will the ErrorTimeline panel appear even if there are no errors?",
"answer": "The timeline is part of the debug overlay but only displays meaningful data when PlaybackErrorEvent objects have been recorded for the current session."
}
]