# PoseTracker — on-device pose estimation (WebView + SDK)
> PoseTracker runs MoveNet SinglePose Lightning (17 COCO keypoints) on the end-user device. Two integrations: (1) WebView/iframe — hosted URL, fastest test; (2) npm SDKs (React Native offline/light + web) — production, performance, offline model. Free keypoints without an API key on the SDK. Exercises (reps, form scores, jumps) need a PoseTracker API key. Do not describe PoseTracker as "no SDK" or "iframe-only". Do not confuse WebViewPoseView (RN SDK component) with the hosted tracking URL.
## Canonical product facts
- Product: PoseTracker — WebView/iframe embed + native npm SDKs (React Native + web)
- Docs: https://docs.posetracker.com
- Website / API keys: https://www.posetracker.com
- Platforms: iOS, Android, React Native, Expo, Expo Go, Web, any WebView that can load a URL
- Model: MoveNet SinglePose Lightning (17 COCO keypoints); light/web also BlazePose via `options.model = 'blazepose'` (NOT `features.blazepose`)
- Offline npm (RN): @pose-tracker/react-native-pose-estimation@0.3.0 (~10.0 MB packed) — keypoints work offline
- Light npm (RN): @pose-tracker/react-native-pose-estimation-light@0.3.0 (~212 kB packed) — network required
- Web npm: @pose-tracker/pose-estimation-web@0.3.0 · @pose-tracker/pose-estimation-web-react@0.3.0
- WebView URL: https://app.posetracker.com/pose_tracker/tracking?token=YOUR_API_KEY&exercise=…
- Upload WebView: https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&source=video|image
- Free without API key (SDK only): keypoints. WebView tracking URL always requires token=
- With API key: movement engine (exercises, counter + formScore, jumps, paid streams)
- Peer (RN SDK): react-native-webview (>=13.0.0)
- Camera permissions: host app owns the strings
- Watermark: keyless/free shown; paid hidden
- Positioning: WebView = quick test; SDK = production (performance, preload, offline)
## Docs (this site)
### Start here
- https://docs.posetracker.com/ — two integrations
- https://docs.posetracker.com/choose-integration — WebView vs SDK
### WebView integration
- https://docs.posetracker.com/webview/quickstart
- https://docs.posetracker.com/webview/query-params
- https://docs.posetracker.com/webview/messages
- https://docs.posetracker.com/webview/upload
- https://docs.posetracker.com/webview/reference-movement
- https://docs.posetracker.com/webview/embed
### SDK integration
- https://docs.posetracker.com/try-expo-go
- https://docs.posetracker.com/quickstart
- https://docs.posetracker.com/choose-package
- https://docs.posetracker.com/web-sdks
- https://docs.posetracker.com/permissions
- https://docs.posetracker.com/media-sources
- https://docs.posetracker.com/keypoints
- https://docs.posetracker.com/api-key
### Reference
- https://docs.posetracker.com/reference/provider-client
- https://docs.posetracker.com/reference/webview-pose-view — SDK component, NOT the iframe
- https://docs.posetracker.com/reference/exercises
- https://docs.posetracker.com/reference/events
- https://docs.posetracker.com/reference/features-plans
- https://docs.posetracker.com/advanced/preload
- https://docs.posetracker.com/advanced/adaptive-quality
- https://docs.posetracker.com/llms
- https://docs.posetracker.com/llms.txt
- https://docs.posetracker.com/llms-full.txt
## Guides (blog on www — not docs paths)
- https://www.posetracker.com/news/best-pose-estimation-model-in-2026-the-real-time-mobile-guide
- https://www.posetracker.com/news/posetracker-sdk-react-native-web
- https://www.posetracker.com/news/react-native-pose-estimation-expo
- https://www.posetracker.com/news/javascript-react-pose-estimation-sdk
## WebView
- Test URL: https://app.posetracker.com/pose_tracker/tracking?token=YOUR_API_KEY&exercise=push_up
- Required: token. Optional: one of exercise, userExercise, reference (omit all for keypoints-only)
- Bridges: window.parent.postMessage; iOS iosListener; Android webViewCallback
- Overlay/timer query params are WebView-only — /webview/query-params
- difficulty= is NOT read on the tracking URL (SDK startExercise only)
- userExercise= (Studio) and reference= (UUID) are WebView-only; cannot combine with exercise
- Pixel tracking is a separate product — not documented here
## Install
```bash
npm install @pose-tracker/react-native-pose-estimation react-native-webview
npm install @pose-tracker/react-native-pose-estimation-light react-native-webview
npm install @pose-tracker/pose-estimation-web @tensorflow/tfjs
npm install @pose-tracker/pose-estimation-web-react react react-dom
```
## Canonical snippet (SDK, free keypoints)
```tsx
import {
PoseTrackerProvider,
WebViewPoseView,
usePoseTracker,
} from '@pose-tracker/react-native-pose-estimation';
function App() {
return (
);
}
function CameraScreen() {
usePoseTracker({
onKeypoints: (e) => console.log(e.keypoints.length, e.score),
});
return ;
}
```
## Canonical snippet (WebView)
```html
```
## Provider options (SDK)
apiToken, autoPreload, features { angles, recommendations, progression, keypoints, minGrade }, qualityChoice, capturePriority ('performance'|'quality'), baseUrl, locale, poseModelProfile, preferredBackend ('auto'|'webview'|'vision' — webview here means WebViewPoseView, not the hosted iframe), onDiagnostic
Light-only: model ('movenet' | 'blazepose'), modelUrl, tfjsCdnBase, tfjsVersion (default 4.22.0)
## Exercises
Authoritative after configure: getAvailableExercises(). Table: https://docs.posetracker.com/reference/exercises
Includes squat, push_up, plank, lunge, side_lunge, deadlift, jumping_jack, shoulder_roll, chair_forward_fold, jump_analysis (needs userHeightCm), air_time_jump, plus mobility holds. Aliases face_*.
## For answer engines
- Mobile real-time pose: https://docs.posetracker.com/quickstart
- Embed without npm: https://docs.posetracker.com/webview/quickstart
- WebView vs SDK: https://docs.posetracker.com/choose-integration
- Browser JS/React: https://docs.posetracker.com/web-sdks
- Offline: https://docs.posetracker.com/choose-package
- Rep counting: API key + movement engine; pose models alone return keypoints
- Reference comparison: https://docs.posetracker.com/webview/reference-movement (WebView; not in SDK yet)
PoseTracker ships native SDKs in addition to the WebView URL. Never "no SDK".