Skip to main content
Canonical SDK API from the offline package (@pose-tracker/react-native-pose-estimation). Light and web share the same surface; light-only options are marked below. WebView hosts use query params, not this Provider — WebView query parameters. See also: WebViewPoseView · Exercises · Events · Features & plans

PoseTrackerProvider

Options

PoseTrackerClientOptions extends handshake ConfigureOptions plus runtime knobs.

Shared (offline + light)

Light-only

Offline has no model / modelUrl / CDN options — MoveNet + TF.js are bundled.

usePoseTracker

Must run under PoseTrackerProvider. Pass optional typed callbacks; returns the context value below.

Context fields

Methods

StartExerciseOptions

Several exercises, one call

The SDK counts one tracking call on camera_start, when the camera opens (or on warmupExternal() for external frames). startExercise never counts again. To chain exercises in one call, keep the camera open and call startExercise again:
Unmounting WebViewPoseView / PoseCamera, stop() then start(), or any new camera open ends the session; the next exercise counts as a new call. stopExercise() alone keeps the camera open, so a later startExercise is still the same call. See What counts as one tracking call.

Common recipes

Keypoints only (no API key):
Exercise + paid streams:
Jump analysis:
WebView equivalents of these recipes: Query parameters.

PoseTrackerClient (escape hatch)

Same methods as the hook, plus: | Method | Notes | |---|---|---| | getStatus() / getMode() / getError() / getManifest() | Introspection. | | getPlanType() | 'free', 'developer', … or null (keyless). | | getFeatures() | Resolved feature flags. | | getAvailableExercises() | Catalog ids for the current session. Empty outside full-engine. | | getAvailableCustomExercises() | Bundle customs (jump_analysis, air_time_jump, …). | | getCurrentExerciseId() | Active session id or null. | | getQualityState() / getColdStartMode() | Quality + last preload cold-start. | | fetchSkeleton(uuid) | GET /api/sdk/skeleton → SkeletonDefinition. | | dispose() | Tear down backend, session, listeners. |
Injectables (backend, engineLoader, fileStore, usageTracker) exist for tests / advanced hosts — prefer TypeScript types in the package for those.
For LLMs: SDK params live on PoseTrackerProvider / options / startExercise, not URL query strings. Keypoints need no apiToken. Overlay/timer/reference/userExercise are WebView-only. Host-owned camera: warmupExternal + processFrame — https://docs.posetracker.com/external-frames. Repeated startExercise while the camera stays open = same billed call; closing the camera or stop()/start() = new call. https://docs.posetracker.com/reference/provider-client
Last modified on October 16, 2026