Skip to content

Repository files navigation

@quickpose/react-native

React Native plugin for QuickPose ML pose estimation SDK. Provides real-time body tracking, fitness rep counting, range of motion measurement, and skeleton overlays on iOS and Android.

Installation

npm install @quickpose/react-native

iOS Setup

cd ios && pod install

The podspec automatically pulls QuickPose iOS pods (QuickPoseCore, QuickPoseCamera, QuickPoseSwiftUI).

Android Setup

No extra steps — Gradle resolves QuickPose + CameraX dependencies automatically.

SDK Key

Register for a free SDK key at https://dev.quickpose.ai.

Usage

import{QuickPoseView}from'@quickpose/react-native';<QuickPoseViewsdkKey="your-key-here"features={['overlay.wholeBody']}useFrontCamera={true}style={{flex: 1}}onUpdate={(event)=>{const{ results, feedback }=event.nativeEvent;// results = [{ feature: string, value: number }]// feedback = string | null}}/>

Props

PropTypeDefaultDescription
sdkKeystringrequiredYour QuickPose SDK key
featuresstring[]requiredFeature identifiers to activate
useFrontCamerabooleantrueUse front-facing camera
styleViewStyleStandard React Native style
featureStylesRecord<string, QuickPoseStyle>Per-feature overlay styling, keyed by feature string
onUpdate(event) => voidCalled each frame with results and feedback

Feature Strings

Overlay

StringDescription
overlay.wholeBodyFull body skeleton
overlay.upperBodyShoulders, arms, hips
overlay.lowerBodyHips, legs
overlay.arm.leftLeft arm
overlay.arm.rightRight arm
overlay.leg.leftLeft leg
overlay.leg.rightRight leg
overlay.shouldersShoulders
overlay.armsBoth arms
overlay.legsBoth legs
overlay.hipsHips
showPointsAll 33 body landmarks

Range of Motion

StringDescription
rangeOfMotion.shoulder.leftLeft shoulder rotation
rangeOfMotion.shoulder.rightRight shoulder rotation
rangeOfMotion.elbow.leftLeft elbow
rangeOfMotion.elbow.rightRight elbow
rangeOfMotion.hip.leftLeft hip
rangeOfMotion.hip.rightRight hip
rangeOfMotion.knee.leftLeft knee
rangeOfMotion.knee.rightRight knee
rangeOfMotion.neckNeck
rangeOfMotion.backBack

Fitness

StringDescription
fitness.squatsSquats
fitness.pushUpsPush ups
fitness.jumpingJacksJumping jacks
fitness.sumoSquatsSumo squats
fitness.lunges.leftLeft leg lunges
fitness.lunges.rightRight leg lunges
fitness.sitUpsSit ups
fitness.cobraWingsCobra wings
fitness.plankPlank hold
fitness.bicepCurlsBicep curls
fitness.legRaisesLeg raises
fitness.gluteBridgeGlute bridge
fitness.overheadDumbbellPressOverhead dumbbell press
fitness.vUpsV-ups
fitness.lateralRaisesLateral raises
fitness.frontRaisesFront raises
fitness.sideLunges.leftSide lunges (left)
fitness.sideLunges.rightSide lunges (right)

Input / Gestures

StringDescription
raisedFingersDetect raised fingers
thumbsUpDetect thumbs up
thumbsUpOrDownDetect thumbs up or down

Side variants: append .left or .right (e.g. raisedFingers.left).

Styling

Every feature accepts a QuickPoseStyle via the featureStyles prop, keyed by the feature string. An optional #variant suffix names a styled variant of the same feature (overlay.wholeBody#glow).

<QuickPoseViewfeatures={['overlay.wholeBody']}featureStyles={{'overlay.wholeBody': {color: '#00FF88',relativeLineWidth: 1.5,lineCap: 'round',linePattern: 'dashed',shadow: {color: '#00FF88',radius: 14,offsetX: 0,offsetY: 0},outline: {color: '#000000',relativeWidth: 0.3},imageFill: Image.resolveAssetSource(require('./flames.png')).uri,fontName: 'Bungee-Regular',letterSpacing: 0.08,conditionalColors: [{min: 120,color: '#00FF00'}],},}}/>

See the QuickPose styling docs for what each option draws. imageFill reveals an image through the skeleton's lines, points and labels; fontName and letterSpacing style the measurement labels; a shadow with zero offset in the line's own color renders as a glow.

Example Apps

Each example is a complete React Native app that depends on @quickpose/react-native via "file:.." (local symlink). No npm publish required to run them.

Prerequisites

Running an example

# 1. Install JS dependenciescd example-basic
npm install
# 2. Add your SDK key in App.tsx (replace "YOUR SDK KEY HERE")# 3. iOScd ios && pod install &&cd ..
npx react-native run-ios --device
# 4. Android (physical device connected via USB)
npx react-native run-android

example-basic/

Minimal demo — whole body overlay in ~50 lines of React Native code. Mirrors the native iOS BasicDemo.

example-feedback/

Fitness exercise with real-time feedback text and progress bar. Demonstrates fitness.frontRaises with the onUpdate callback. Mirrors the native iOS FeedbackDemo.

example-picker/

Full feature picker with category menus, rep counter, and hold timer. Browse all overlay, ROM, fitness, and input features at runtime. Mirrors the native iOS/Android PickerDemo.

example-manual-bridge/

The original AwesomeProject — a manual bridge reference for users who want full control over the native bridge code. Does not use the plugin; bridge files are embedded directly in the app.

Requirements

  • React Native >= 0.60
  • iOS 15+
  • Android SDK 26+ (physical device required for camera)

Links

About

Quickly add MediaPipe Pose Estimation and Detection to your React Native app. Enable powerful features in your app powered by the body or hand.

Topics

Resources

Stars

27 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages