KinesteX

Error & Status Events

Events for errors, warnings, and playback fallbacks.


EventData FieldsDescription
error_occurredseverity: string, data: stringGeneral error message
error_occurredseverity: string, message: stringAlternative error format
error_occurredseverity: string, data: string, error: anyError with details
warningdata: stringWarning message
ios_video_fallback_activatedreason, videoUrl, readyState, userAgentiOS dropped to image-based playback after the full recovery ladder (silent retry → tap-to-play prompt → image mode) failed. The exercise still runs in a degraded-but-functional mode

error_occurred severity. Every error_occurred has a severity. "critical" means something the user needs failed, for example verification, camera access, loading exercise models, or saving the trainer profile. It does not always end the session: after a partial load_models failure, the models that did load still work. "warning" is a smaller problem the session works around, for example an audio phrase that failed to download, or a log or load_models request with nothing to act on. Read the text from data or message, whichever is present.


ios_video_fallback_activated Payload:

typescript
1{
2  type: "ios_video_fallback_activated",
3  reason: string,              // which recovery stage failed (see below)
4  videoUrl: string,            // URL of the affected video
5  readyState: number | null,   // HTMLMediaElement readyState; null when no video element was available
6  userAgent: string            // Device user agent string
7}

reason is one of:

  • "stuck_after_tap" — user tapped the prompt but the video still had no media data
  • "tap_prompt_timeout" — the tap-to-play prompt was ignored (~5s) and auto-advanced to image mode
  • "tap_play_element_missing" — the video element was gone when the user tapped
  • "tap_play_rejected_<ErrorName>" — the gesture-driven play was rejected, e.g. "tap_play_rejected_NotAllowedError"

(The former single value "video_stuck_at_metadata" is no longer emitted — prefer treating any occurrence of this event as "iOS entered image mode" and branch on the reason prefixes only if needed. Handle readyState as nullable.)


Use this event for analytics or to surface a notice in your UI when iOS playback degrades. Only listen for it if you need visibility into iOS playback issues — no integrator action is required.