@mascotbot/react; Rive hooks from
@mascotbot/react/rive.
Audio pipeline — @mascotbot/react
useMascot()
<MascotProvider>.
Gate audio work on
status === "ready".
useProcessAudio(audioUrl)
null to skip. result is a ProcessAudioResult:
result.timeline to useMascotPlayback().setTimeline(), or
JSON.stringify it to persist and replay later with zero reprocessing —
Offline lip sync.
Rive layer — @mascotbot/react/rive
useMascotRive()
<Mascot>. rive is the
raw, unmodified @rive-app/* instance — yours for data binding, custom
inputs, events, and ViewModels. The SDK never wraps it. setImageAsset swaps
a runtime image asset (e.g. a custom face texture).
useMascotInputs<T>()
This is the supported way to detect and drive non-mouth inputs. See
Rive co-existence.
useMascotPlayback(options?)
MascotPlayback. stress([{ offset, stress }])
schedules emphasis cues — the SDK animates the Rive stress input from them
on the playback clock (see Stress emphasis).
Options:
useLipsyncStream(args)
MediaStream (realtime providers, played audio), or manual chunk pushing.
Full guide: Streaming & microphone.
Low-level Rive loaders
Next
Streaming & mic
useLipsyncStream in depth.Offline lip sync
useProcessAudio → persist → replay.Rive co-existence
Driving non-mouth inputs.