If you’ve ever shipped a KYC, onboarding, or account-recovery flow, you’ve run into the liveness problem: how do you prove the face in front of the camera is a real, present human, not a photo, a screen replay, or a video loop? Solving this in React Native means processing every frame the camera produces, on-device, in milliseconds. The toolchain that makes this practical is a three-piece combination: Vision Camera for the camera pipeline, worklets for off-thread JavaScript, and Google ML Kit for the actual face analysis. This post walks through how those pieces fit together, what each one does, and where the honest limits are. Why this combination exists Liveness is fundamentally a temporal problem. A blink is a sequence of frames where the eye-open signal drops then recovers. A head turn is a sequence where yaw moves through a range.…