Skip to main content
The SDK adapts camera capture so MoveNet stays real-time. Inference is always 192×192; capture resolution drives preprocess cost (especially Android mid-range / Mali).

capturePriority

Leave the default unless the product needs a sharp webcam feed.

qualityChoice

Profiles

Ladder (high → low): prime → pro → lite → ultralite → basic.

FPS floors

  1. Warm-up estimate — zeros bench before getUserMedia; may pick a lower profile (warmup_estimate).
  2. Live auto-downgrade — median inference ms stays too high → drop one tier (low_fps), emit quality_changed.
  3. performance_warning — still below floor on basicdevice_too_slow (throttled).
Pinning qualityChoice sets the start tier; capturePriority: 'quality' only disables automatic FPS-driven drops.

Crash-loop guard

Per (sdkVersion, profile): PROBING → PASSED or FAILED if the previous run died while probing. Failed tiers walk down the ladder. Persists when @react-native-async-storage/async-storage is installed (optional, recommended).

Host listeners

Recommendations

  1. Keep qualityChoice: 'AdaptiveChoice' and capturePriority: 'performance'.
  2. Handle onPerformanceWarning in your own UX / analytics (localize before end users).
  3. Do not force prime on mid-range Android in production.
  4. Install AsyncStorage so the crash-guard persists.