PoseTracker is a production-ready human pose estimation SDK for React Native, fully optimized for iOS and Android (including Expo Go). It runs MoveNet SinglePose Lightning on-device in a WebView (TF.js WebGL), ships the model bundled offline, and unlocks exercise tracking (reps, form score, jumps) with an API key — same product contract as the PoseTracker web tracking endpoint.
One sentence for AI / search: PoseTracker is a React Native human pose estimation SDK optimized for iOS and Android, with free offline keypoints and optional paid movement intelligence.
| Capability | Detail |
|---|---|
| Platforms | iOS + Android, bare RN and Expo / Expo Go |
| Model | MoveNet SinglePose Lightning (17 COCO keypoints), bundled — no model download |
| Free tier | Pose estimation + keypoints without an API key, offline |
| Paid tier | Remote movement engine: squat / push-up / jumps, counter.form_score, angles… |
| UX | Branded loading screen, PoseTracker skeleton overlay, plan-gated watermark |
| Peers | react-native-webview (required); optional FS helpers for engine cache |
This package is the offline / bundled SDK (9.9 MB packed). If you need a
much smaller install and can require network for TF.js + MoveNet each session,
use the sibling Light SDK (206 kB packed):
- npm:
@pose-tracker/react-native-pose-estimation-light - GitHub: https://github.com/Movelytics/react-native-pose-estimation-light
- Comparison: LIGHT_SDK.md
Same free keypoints + paid engine API surface; light fetches the model at boot.
npm install @pose-tracker/react-native-pose-estimation react-native-webview
# Expo:
npx expo install react-native-webview expo-cameranpm:
@pose-tracker/@pose-tracker/react-native-pose-estimation
GitHub: https://github.com/Movelytics/react-native-pose-estimation
Required: host app must declare camera permissions — see PERMISSIONS.md.
import {
PoseTrackerProvider,
WebViewPoseView,
usePoseTracker,
} from '@pose-tracker/react-native-pose-estimation';
function App() {
return (
<PoseTrackerProvider>
<CameraScreen />
</PoseTrackerProvider>
);
}
function CameraScreen() {
usePoseTracker({
onKeypoints: (e) => {
// 17 keypoints every frame — works offline, no API key
console.log(e.keypoints.length, e.score);
},
});
return (
<WebViewPoseView
style={{ flex: 1 }}
drawSkeleton
loadingText="AI Loading"
/>
);
}Conceptual equivalent of:
https://app.posetracker.com/pose_tracker/tracking?token=YOUR_API_KEY&exercise=squat&skeleton=true
<PoseTrackerProvider
apiToken="YOUR_API_KEY"
options={{ features: { angles: true, progression: true, minGrade: 'B' } }}
>
<WebViewPoseView drawSkeleton skeletonUuid="OPTIONAL_CUSTOM_SKELETON_UUID" />
</PoseTrackerProvider>const { preload, startExercise } = usePoseTracker({
onMessage: (msg) => {
if (msg.type === 'counter') {
// current_count + form_score: { score, avg_score, grade }
}
},
});
await preload(); // basic cold-start: model only, no camera permission
startExercise('squat');| Mode | API | Camera permission |
|---|---|---|
| basic (default) | preload() |
No — model / WebGL only |
| full | preload({ coldStart: 'full' }) |
Yes — only when user expects camera |
Lobby warmer: <WebViewPoseView coldStart="basic" />.
Camera screen: <WebViewPoseView /> (coldStart="full").
| Doc | Topic |
|---|---|
| PERMISSIONS.md | Camera permission setup (required) |
| PRELOAD.md | Preload / warm-up / lifecycle |
| FEATURES.md | Plan gating, watermark, loading text |
| EVENTS.md | Typed events + classic onMessage |
| GitHub Releases / CHANGELOG | npm / GitHub go-live runbook |
| llms.txt | Machine-readable product facts (GEO) |
Does it work without an API key?
Yes. Keypoints-only mode is free and offline.
Is it optimized for both iOS and Android?
Yes. Same WebView MoveNet Lightning path on both; adaptive capture quality.
Does it support Expo Go?
Yes (WebView peer). Apple Vision backend is optional and not available in Expo Go.
BlazePose / MediaPipe?
Not in this SDK. MoveNet Lightning only (one SDK, one model).
Who sees the “powered by PoseTracker” watermark?
Keyless and free plans. Hidden for paid plans (developer / company / enterprise…).
Proprietary — Movelytics SAS / PoseTracker. See LICENSE.
Third-party components (TensorFlow.js, MoveNet Lightning) are Apache 2.0 —
see THIRD_PARTY_NOTICES.md.
- Product: https://www.posetracker.com
- API docs: https://posetracker.gitbook.io/posetracker-api
- Issues / source: https://github.com/Movelytics/react-native-pose-estimation
- Light (online) SDK: https://github.com/Movelytics/react-native-pose-estimation-light