Configure Daily Prebuilt's UI for a custom experience
If you need to build a fully custom UI, use the Daily call object.
Enabling and disabling Daily Prebuilt meeting features
Domain, room, and meeting token properties
Many parts of the in-call experience can be customized by changing domain, room or meeting token properties.
Properties that can be set at both the domain and room level
If a property is set for the domain and also set at the room level, the room setting takes precedence.
Domain and room level properties |
---|
enable_people_ui |
enable_prejoin_ui |
enable_network_ui |
enable_emoji_reactions |
enable_hand_raising |
Properties that can be set at both the room and meeting token level
If a property is set for the room and also set in the meeting token, the meeting token setting takes precedence.
Room and meeting token level properties |
---|
enable_screenshare |
enable_recording |
start_with_video_off |
These UI-related properties can be specified at the room level:
Room level properties |
---|
enable_knocking |
enable_chat |
owner_only_broadcast |
And these UI-related properties can be configured using meeting tokens:
Meeting token level properties |
---|
is_owner |
start_cloud_recording |
close_tab_on_exit |
redirect_on_meeting_exit (can also be set at the domain level) |
UI flows when a user joins a meeting: managing room access and pre-meeting experiences
If youâre using Daily Prebuilt, setting enable_prejoin_ui
to true
at either the room or domain level turns on a lobby experience for call participants. They can check their camera and microphone before joining a call, and also wait to be admitted by the host if the room is private and they are joining without a token.
You can also take advantage of a suite of Daily methods and events geared towards implementing a custom lobby if you're building on top of the Daily call object. With these methods and events you can:
- Determine the local participant's access level, even before attempting to join a meeting:
preAuth()
,accessState()
,'access-state-updated'
- Request elevated access to a meeting:
requestAccess()
- Manage pending access requests (if you're a meeting owner):
waitingParticipants()
,updateWaitingParticipant()
,updateWaitingParticipants()
,'waiting-participant-added'
,'waiting-participant-updated'
,'waiting-participant-removed'
These methods and events are also all available when using Daily Prebuilt if you'd like to build similar waiting room experiences around the call embed.
UI flows when a user leaves a meeting
Two properties control what happens when a user leaves a meeting from a standalone browser tab: close_tab_on_exit
and redirect_on_meeting_exit
.
If close_tab_on_exit
is set to true
, the browser tab closes when the user clicks the leave meeting button in the in-call menu bar.
If the redirect_on_meeting_exit
property is set, the property value will be interpreted as a URL that the browser should redirect to when the user clicks the leave meeting button. A query string that includes the parameter recent-call=<domain>/<room>
is appended to the URL.
By default, there is no leave meeting button when you embed Daily Prebuilt. You control that meeting flow with your own UI code outside the iframe. Or you can add a leave call button to the embedded UI with our Javascript API.
Daily branding in call UI
By default, Daily branding is shown in the call UI for accounts that do not have a credit card on file.
There is no associated cost to remove Daily branding from the call UI; however, you will need to add your credit card information to your account to have access to the hide Daily branding option via the hide_daily_branding
domain property. Refer to our pricing page for more information.