Setting the file. One moment.
Subchapter 114.36
use-cases/immersive-experiences.mdMarkdown3 KBView on GitHub
Custom video layouts replacing the standard Zoom gallery view using the Layers API.
The Layers API lets you take over the meeting’s video display to create custom layouts - podcast formats, talk shows, classrooms, game shows, and branded meeting experiences.
References
App Types| Pattern | Description | Key APIs |
|---|---|---|
| Podcast layout | 2-3 hosts with custom background | drawParticipant, drawImage |
| Talk show | Large host + row of guests | drawParticipant, drawImage |
| Classroom | Teacher prominent + student thumbnails | drawParticipant, drawImage |
| Game show | Custom positions with animated overlays | drawParticipant, drawImage, drawWebView |
| Branded meeting | Company background + participant positions | drawParticipant, drawImage |
| Interactive dashboard | Participants + live data panels | drawParticipant, drawWebView |
Host Participants
──── ────────────
Controls layout (UI panel) --> Receive layout via Socket.io/backend
runRenderingContext() --> runRenderingContext()
drawParticipant() x N --> drawParticipant() x N (same positions)
drawImage() (background) --> drawImage() (same background)All participants must be in immersive mode and rendering the same layout. The host typically controls layout changes and broadcasts them via your backend (Socket.io, WebSocket).
import zoomSdk from '@zoom/appssdk';
await zoomSdk.config({
capabilities: [
'runRenderingContext', 'closeRenderingContext',
'drawParticipant', 'clearParticipant',
'drawImage', 'clearImage',
'getMeetingParticipants', 'onParticipantChange'
],
version: '0.16'
});
// Start immersive mode
await zoomSdk.runRenderingContext({ view: 'immersive' });
// Get participants and layout them
const { participants } = await zoomSdk.getMeetingParticipants();
// ... position participants with drawParticipant()zoom-apps-sdk (Layers API) --> oauth (authorization)
|
v
zoom-rest-api (optional: meeting management)