Run Participants and Collaboration in Expo
Build participant controls and shared activities with
mediasfu-reactnative-expo@2.5.0: waiting and requests, moderation, roles and
permissions, messages, polls, breakouts, whiteboard, and recording.
Complete the Expo room lifecycle first. Keep account credentials and room authority on your backend. The current pre-join surface reads configured credentials before invoking custom callbacks, so do not add an account key to an Expo app as a workaround.
Start with the supplied mobile workspaces
ModernMediasfuGeneric includes participant, waiting, request, co-host,
panelist, permission, message, poll, breakout, whiteboard, and recording
workspaces. Start there so touch layout, safe areas, keyboard behavior, room
roles, media, and socket state stay coordinated.
For a custom navigation shell, the package root exports the workspace launchers and actions:
import {
handleCreatePoll,
handleEndPoll,
handleVotePoll,
launchBreakoutRooms,
launchConfigureWhiteboard,
launchMessages,
launchParticipants,
launchPoll,
launchRecording,
launchRequests,
launchWaiting,
startRecording,
stopRecording,
updatePanelists,
updateParticipantPermission,
} from 'mediasfu-reactnative-expo';
Use the current room-owned options. Do not build a second participant, role, or poll store for a custom screen.
Participant authority
Use the supplied participant, waiting, request, co-host, panelist, and permission workspaces. Only show an authority action when the current room role permits it, and confirm success from current room state.
| Action | Observable success | Recovery |
|---|---|---|
| Admit or reject | The waiting entry disappears and the person joins or receives rejection. | Keep it pending until the room changes. |
| Approve or deny request | The request closes and the participant receives the result. | Restore the current request after authority or connection failure. |
| Mute, restrict, or remove | The affected participant and remaining clients receive the state. | Never hide a card locally to simulate success. |
| Assign co-host or panelist | The target's role and controls change. | Keep the previous role if no room update arrives. |
| Change permission | The target control follows the new policy. | Restore only the failed setting. |
Disable controls while the app is backgrounded, reconnecting, or waiting for a previous action. Ask for confirmation before removal or a broad permission change.
Messages, polls, breakouts, and whiteboard
Use the supplied message workspace for room and direct messages. Keep the recipient visible, preserve unsent drafts according to your privacy policy, and show success only after current message state includes the message.
Use handleCreatePoll, handleVotePoll, and handleEndPoll for the complete
poll lifecycle. Disable double taps and reload current poll state after a
reconnect.
Use the breakout workspace to review assignments, handle unassigned people, start the session, confirm every destination, and stop it before clearing drafts. Use the whiteboard configuration workspace to start and stop a shared board; verify changes from a second participant.
Recording
Open the recording workspace, explain what will be captured, and collect the
consent your product requires. Use startRecording and stopRecording with
current room options. Show recording as active or stopped only after the room
confirms it, then apply your backend's retention, access, and deletion policy.
Expo recovery and cleanup
Test background and foreground transitions, audio-route changes, rotation, keyboard display, permission changes, and network handoff. After reconnect, reload current participant and collaboration state; never replay an interrupted action automatically.
On leave, removal, or meeting end, close workspaces and clear app-owned selections, pending actions, drafts, timers, temporary exports, listeners, and room authority. Keep participant leave, removal, and host-ended meeting states distinct.
Release checklist
- Test host, co-host or panelist, and participant devices separately.
- Admit, reject, approve, deny, mute, remove, and reassign with two devices.
- Send room and direct messages with keyboard and rotation changes.
- Create, vote, and end a poll without accepting a double tap.
- Start and stop breakouts and whiteboard across two devices.
- Start and stop recording with consent and retention behavior visible.
- Background and restore the app during pending operations.
- Switch network and audio route without replaying an action.
- Verify cleanup after leave, removal, and meeting end.
Build and test the Expo application, then run this checklist on physical Android and iOS devices before release.