KinesteX

Motion Tracking Settings

Control AI-powered motion tracking behavior. Applies to: Workout player (motion tracking in other views — Camera, Games, Assessments — is always on and cannot be toggled off by users).


ParameterTypeDefaultApplies toWhat it does internally
motionTrackingSettingOnbooleantrueSettings modalWhen false, hides the AI-tracking on/off toggle from the in-app Settings modal, so users cannot change the tracking mode themselves
motionTrackingEnabledbooleanuser preferenceWorkout playerSession-level override of the AI tracking state. When explicitly set (true or false), it clears the user's saved preference (localStorage aiTrackingEnabled) and uses the provided value for this session
motionDataEnabledbooleantrueWorkout player, CameraWhen false, the SDK does NOT record per-frame pose landmark data during the session. Session replay will be empty for affected sessions, but rep counting and all other workout functionality is unaffected

What happens when motion tracking is OFF (`motionTrackingEnabled: false` or user toggle):

  • The camera-positioning (silhouette) step is skipped and no camera/pose pipeline runs; a "No AI" badge is shown.
  • Rep-based exercises are converted to timers (roughly 2 seconds per configured rep) and auto-advance when the timer ends — there is no manual "next rep" button, and no reps, accuracy, or mistakes are recorded.
  • If you need realistic tracking data without a person in front of the camera, use videoURL instead — see Testing & Simulation.

`motionDataEnabled` — only use this if you know why it's necessary. This flag exists for memory-constrained scenarios (e.g., long workouts with many unique exercise videos on older iOS devices where peak memory pressure can cause the WebView to crash). Disabling motion data reduces memory usage at the cost of losing session replay. The recorder state resets on every verification, so the flag does not leak across sessions. Default behavior is unchanged if you omit the parameter.

Motion Tracking Settings
Swift example:
1// Via customParams
2kinestex.createView(
3    customParams: [
4        "motionTrackingSettingOn": true,
5        "motionTrackingEnabled": true,
6        "motionDataEnabled": false // Only set when memory-constrained
7    ]
8)