Skip to content

Permissions ​

An app without permissions can only show its own window: greet the person, show toasts, open a stage for that person. Everything that touches the meeting is a permission. You list permissions in the manifest; before installing, the person sees them in plain words and presses Allow and add.

List ​

PermissionWhat the person seesWhat it unlocks
participants.readSee who is in the meeting and who is speakingcontext.participants, app.participants(), events participant.joined, participant.left, speaking
app.broadcastExchange data with its copies at other participantsapp.broadcast(), event broadcast
chat.readRead the meeting chatevent chat.message
chat.sendWrite to the chat on your behalf, marked with the app nameapp.chat.send() — the message goes from the person, starting with [App name]
captions.readRead live captionsevent captions, while live captions run in the meeting
badges.writeShow small labels on participant tilesapp.badges.set(), app.badges.clear()
stage.startOpen a shared stage for everyone (only when you are the host)app.stage.open({ everyone: true })
storageKeep up to 64 KB of its own data for youapp.storage.get/set/delete

Always available, no permission needed: ReMeet.ready(), app.notify(), app.stage.open() for yourself, app.stage.close(), the theme event.

Camera and microphone ​

If your page itself needs the camera or the microphone (for example, a recorder or a pose game), add media:

json
"media": ["camera", "microphone"]

The person sees «Use your camera inside the app (the browser asks once more)». After they allow it, the frame gets access and the browser asks its own question on first use. Without media, getUserMedia() inside the frame fails. An app never gets the meeting's audio or video streams.

Checking at runtime ​

js
const app = await ReMeet.ready();

if (app.can('chat.send')) {
  showShareButton();
}

app.permissions; // ['participants.read', 'app.broadcast', …] — what this person allowed

A call without the permission fails with code 403:

js
try {
  await app.chat.send('Results are ready');
} catch (error) {
  if (error.code === 403) app.notify('Allow the app to write to the chat to share results');
}

Events that need a permission simply never arrive without it.

Good manners ​

  • Ask for the minimum. Every extra line in the install window costs installs.
  • Don't make the main function depend on a permission you can live without: check app.can() and offer a simpler path.
  • If an update adds a permission, people who installed the app earlier don't have it until they add the app again — see updating an app.

ReMeet Apps SDK v0 · beta. The SDK file v0.js is MIT.