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).
| Parameter | Type | Default | Applies to | What it does internally |
| motionTrackingSettingOn | boolean | true | Settings modal | When false, hides the AI-tracking on/off toggle from the in-app Settings modal, so users cannot change the tracking mode themselves |
| motionTrackingEnabled | boolean | user preference | Workout player | Session-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 |
| motionDataEnabled | boolean | true | Workout player, Camera | When 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
videoURLinstead — 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.
1// Via customParams
2kinestex.createView(
3 customParams: [
4 "motionTrackingSettingOn": true,
5 "motionTrackingEnabled": true,
6 "motionDataEnabled": false // Only set when memory-constrained
7 ]
8)