1. Add a Hair Check
The goal is to wait until the replica has actually joined before dropping the user into the live room, so the experience feels instant instead of “loading / awkward silence.” Tavus provides a ready-made Hair Check block you can plug into your application. The Hair Check component shows a pre-call interface where users can test and configure their audio/video devices while the replica joins the room in the background. Waiting for the replica to join: Before transitioning from the Hair Check screen to the live conversation, wait for theparticipant-joined event from Daily. In a Tavus CVI one-to-one conversation, any participant that joins that is not the ‘local’ participant is the replica.
participant.user_name property to identify the replica, or alternatively listen for the system.replica_joined webhook callback if you’ve set a callback_url when creating the conversation. For webhook-based approach, see the Webhooks and Callbacks documentation for details on the system.replica_joined event.
Additionally, system.replica_joined is also broadcast as a Tavus app-event over Daily’s data channel. You can listen for Daily app-message events and check event_type === "system.replica_joined" if you prefer in-call event handling rather than webhooks.
Benefits:
- Users see an active interface instead of a loading screen
- Device permissions are handled before joining
- The replica has time to fully join before the user enters
- Creates a seamless, instant-feeling transition
2. Add a Network Check for Proactive Troubleshooting
Daily provides network connectivity test components you can run before joining to detect common issues (bandwidth, network connectivity, etc.).testCallQuality() (Recommended)
The most comprehensive pre-call test. It automatically connects to a Daily room, streams video, and collects outbound WebRTC stats for up to 30 seconds.
Returns:
"good": Network conditions are optimal"bad": Network conditions are poor"warning": Network conditions may cause issues"aborted": Test was interrupted"failed": Test failed to complete
"bad" or "warning", display a message letting them know their connection is poor and may affect their experience. This helps set expectations and allows users to improve their network before joining.
Benefits:
- Detects bandwidth issues before the user joins
- Identifies network connectivity problems
- Provides actionable feedback about network conditions
- Allows you to set user expectations about connection quality
- Reduces failed connection attempts and user frustration
Summary
Combining these two strategies significantly improves the startup experience:- Hair Check - Masks loading time with an active interface
- Network Testing - Proactively identifies and handles connectivity issues

